school

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

spaceinvaders.zpy (3124B)


      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 		(if (!= reload 0)
     80 		(set reload (- reload 1))
     81 		(endif)
     82 
     83 		(BeginDrawing)
     84 		(ClearBackground BLACK)
     85 		(DrawRectangle (- p->x p->ofx) (+ p->y p->ofy) p->width p->height GREEN)
     86 		(if (= b->exists true))
     87 			(DrawRectangle (- b->x b->ofx) (+ b->y b->ofy) b->width b->height BLUE)
     88 		(endif)
     89 		(if (= b2->exists true))
     90 			(DrawRectangle (- b2->x b2->ofx) (+ b2->y b2->ofy) b2->width b2->height PURPLE)
     91 		(endif)
     92 		(if (= e->exists true))
     93 			(DrawRectangle (- e->x e->ofx) (+ e->y e->ofy) e->width e->height RED)
     94 		(endif)
     95 		(EndDrawing)
     96 
     97 		(if (IsKeyDown KEY_LEFT))
     98 			(set p->x (- p->x 6))
     99 		(elif (IsKeyDown KEY_RIGHT))
    100 			(set p->x (+ p->x 6))
    101 		(endif)
    102 
    103 		(if (IsKeyPressed KEY_SPACE))
    104 			(if (= reload 0))
    105 				(if (!= b->exists true))
    106 					(set b->exists true)
    107 				(else)
    108 					(set b2->exists true)
    109 				(endif)
    110 				(set reload 30)
    111 			(endif)
    112 		(endif)
    113 
    114 		(if (= b->exists true))
    115 			(set b->y (- b->y 10))
    116 			(if (< b->y 0))
    117 				(set b->y 700)
    118 				(set b->exists false)
    119 			(endif)
    120 		(else)
    121 			(set b->x p->x)
    122 		(endif)
    123 
    124 		(if (touching b e))
    125 			(set b->y 700)
    126 			(set b->exists false)
    127 			(set ehp (- ehp 1)
    128 			(if (<= ehp 0))
    129 				(set e->exists false)
    130 			(endif)
    131 		(endif)
    132 
    133 		(if (= b2->exists true))
    134 			(set b2->y (- b2->y 10))
    135 			(if (< b2->y 0))
    136 				(set b2->y 700)
    137 				(set b2->exists false)
    138 			(endif)
    139 		(else)
    140 			(set b2->x p->x)
    141 		(endif)
    142 
    143 		(if (touching b2 e))
    144 			(set b2->y 700)
    145 			(set b2->exists false)
    146 			(set ehp (- ehp 1)
    147 			(if (<= ehp 0))
    148 				(set e->exists false)
    149 			(endif)
    150 		(endif)
    151 
    152 		(set e->x (+ (* 4 edx) e->x)
    153 		(if (= e->x 800))
    154 			(set edx (* edx -1)
    155 			(set e->y (+ e->y 10))
    156 		(elif (= e->x 0))
    157 			(set edx (* edx -1)
    158 			(set e->y (+ e->y 10))
    159 		(endif)
    160 
    161 	(endfor)
    162 	(CloseWindow)
    163 (endfun)