school

thing1's amazing school repo
Log | Files | Refs | Submodules | README

spaceinvaders.zpy (3137B)


      1 (struct entity)
      2 	(def x:int)
      3 	(def y:int)
      4 	(def width:int)
      5 	(def height:int)
      6 	(def ofx:int)
      7 	(def ofy:int)
      8 	(def exists:bool)
      9 (endstruct)
     10 
     11 //# this checks if 2 entitys are touching
     12 (defun touching bool a:entity* b:entity*)
     13 	(def r1:Rectangle)
     14 	(def r2:Rectangle)
     15 
     16 	(set r1.x a->x)
     17 	(set r1.y a->y)
     18 	(set r1.width a->width)
     19 	(set r1.height a->height)
     20 
     21 	(set r2.x b->x)
     22 	(set r2.y b->y)
     23 	(set r2.width b->width)
     24 	(set r2.height b->height)
     25 	(return (CheckCollisionRecs r1 r2))
     26 (endfun)
     27 
     28 //# the main loop of the program
     29 (defun main int)
     30 	(InitWindow 800 800 "test test")
     31 	(SetTargetFPS 60)
     32 
     33 	(let p:entity* (alloc (sizeof entity)))
     34 	(set p->x 400)
     35 	(set p->y 700)
     36 	(set p->width 50)
     37 	(set p->height 30)
     38 	(set p->ofx 25)
     39 	(set p->ofy 15)
     40 
     41 	(let b:entity* (alloc (sizeof entity)))
     42 	(set b->x 400)
     43 	(set b->y 700)
     44 	(set b->width 10)
     45 	(set b->height 6)
     46 	(set b->ofx 5)
     47 	(set b->ofy 3)
     48 	(set b->exists false)
     49 
     50 	(let b2:entity* (alloc (sizeof entity)))
     51 	(set b2->x 400)
     52 	(set b2->y 700)
     53 	(set b2->width 10)
     54 	(set b2->height 6)
     55 	(set b2->ofx 5)
     56 	(set b2->ofy 3)
     57 	(set b2->exists false)
     58 
     59 	(let e:entity* (alloc (sizeof entity)))
     60 	(set e->x 400)
     61 	(set e->y 100)
     62 	(set e->width 60)
     63 	(set e->height 30)
     64 	(set e->ofx 30)
     65 	(set e->ofy 15)
     66 	(set e->exists true)
     67 
     68 	(let ehp:int 5)
     69 	(let edx:int 1)
     70 
     71 	(let reload:int 0)
     72 
     73 	(for i:int 0 (= (WindowShouldClose) 0) 0)
     74 		(if (= ehp 0))
     75 			(exit 0)
     76 		(elif (= e->y 700))
     77 			(exit 1)
     78 		(endif)
     79 
     80 		(if (!= reload 0)
     81 		(set reload (- reload 1))
     82 		(endif)
     83 
     84 		(BeginDrawing)
     85 		(ClearBackground BLACK)
     86 		(DrawRectangle (- p->x p->ofx) (+ p->y p->ofy) p->width p->height GREEN)
     87 		(if (= b->exists true))
     88 			(DrawRectangle (- b->x b->ofx) (+ b->y b->ofy) b->width b->height BLUE)
     89 		(endif)
     90 		(if (= b2->exists true))
     91 			(DrawRectangle (- b2->x b2->ofx) (+ b2->y b2->ofy) b2->width b2->height PURPLE)
     92 		(endif)
     93 		(if (= e->exists true))
     94 			(DrawRectangle (- e->x e->ofx) (+ e->y e->ofy) e->width e->height RED)
     95 		(endif)
     96 		(EndDrawing)
     97 
     98 		(if (IsKeyDown KEY_LEFT))
     99 			(set p->x (- p->x 6))
    100 		(elif (IsKeyDown KEY_RIGHT))
    101 			(set p->x (+ p->x 6))
    102 		(endif)
    103 
    104 		(if (IsKeyPressed KEY_SPACE))
    105 			(if (= reload 0))
    106 				(if (!= b->exists true))
    107 					(set b->exists true)
    108 				(else)
    109 					(set b2->exists true)
    110 				(endif)
    111 				(set reload 30)
    112 			(endif)
    113 		(endif)
    114 
    115 		(if (= b->exists true))
    116 			(set b->y (- b->y 10))
    117 			(if (< b->y 0))
    118 				(set b->y 700)
    119 				(set b->exists false)
    120 			(endif)
    121 		(else)
    122 			(set b->x p->x)
    123 		(endif)
    124 
    125 		(if (touching b e))
    126 			(set b->y 700)
    127 			(set b->exists false)
    128 			(set ehp (- ehp 1)
    129 			(if (<= ehp 0))
    130 				(set e->exists false)
    131 			(endif)
    132 		(endif)
    133 
    134 		(if (= b2->exists true))
    135 			(set b2->y (- b2->y 10))
    136 			(if (< b2->y 0))
    137 				(set b2->y 700)
    138 				(set b2->exists false)
    139 			(endif)
    140 		(else)
    141 			(set b2->x p->x)
    142 		(endif)
    143 
    144 		(if (touching b2 e))
    145 			(set b2->y 700)
    146 			(set b2->exists false)
    147 			(set ehp (- ehp 1)
    148 			(if (<= ehp 0))
    149 				(set e->exists false)
    150 			(endif)
    151 		(endif)
    152 
    153 		(set e->x (+ (* 4 edx) e->x)
    154 		(if (= e->x 800))
    155 			(set edx (* edx -1)
    156 			(set e->y (+ e->y 10))
    157 		(elif (= e->x 0))
    158 			(set edx (* edx -1)
    159 			(set e->y (+ e->y 10))
    160 		(endif)
    161 
    162 	(endfor)
    163 	(CloseWindow)
    164 (endfun)