Quellcode durchsuchen

Update bubblebobble.c

Rudy Boudewijn van Etten vor 5 Jahren
Ursprung
Commit
cb8f56f47e
1 geänderte Dateien mit 38 neuen und 19 gelöschten Zeilen
  1. 38 19
      games/bubblebobble.c

+ 38 - 19
games/bubblebobble.c

@@ -8,6 +8,8 @@ enum bubblestates{SHOT,FLOATUP,FLOAT};
 enum aistates{ROAMING,TRAPPED,DAMAGED,TRAJECTORY};
 enum flag{SCROLLLEVELDOWN,INGAME};
 
+#define CHEATMODE false
+
 #define MAX_JUMP 4.0f
 
 #define MAX_PLAYERS 2 // second player not fully implemented yet.
@@ -178,7 +180,8 @@ static RenderTexture2D spritefruit3;
 static RenderTexture2D spritefruit4; 
 static RenderTexture2D spritefruit5;  
 
-static int fx=0;
+static bool gameover = false;
+static int fx=0; // for moving the playr in a bubble to the level.
 static int fy=0;
   
 int main(void)
@@ -230,7 +233,7 @@ int main(void)
             case INGAME:
                 if(aimax>0)aiaddtime-=1;
                 if(aiaddtime==0 && aimax>0){
-                    addai(10*tileWidth,tileHeight);
+                    addai(10*tileWidth,tileHeight+5);
                     aiaddtime=20;
                     aimax-=1;
                 }                
@@ -246,15 +249,17 @@ int main(void)
                 updatepickups();
                 updatepickupeffects();
                 playerpickupcollision();
+                
+                                
                 //see if there are no more ai then countdown and reset.
                 restarttime+=1;
                 for(int i=0;i<MAX_AI;i++){
                     if(arr_ai[i].active)restarttime=0;
                 }
-                if(restarttime>60*10){
+                if(gameover==true || restarttime>60*10){
+                    
                     fx = p[PLAYER1].x;
-                    fy = p[PLAYER1].y;
-
+                    fy = p[PLAYER1].y;                    
                     inilevel();
                     inigame();
                     aiaddtime=10;
@@ -262,7 +267,7 @@ int main(void)
                     restarttime=0;
                     offsety = -(mapHeight*tileHeight);
                     gamestate = SCROLLLEVELDOWN;
-                    
+                    gameover = false;
                 }
             break;
         }
@@ -1146,20 +1151,33 @@ void playeraicollision(){
     
     for(int i=0;i<MAX_PLAYERS;i++){
         if(p[i].active==false)continue;
-        //Collide with player and DAMAGED ai
+        //Collide with player and DAMAGED ai..// ai gets launched
         for(int ii=0;ii<MAX_AI;ii++){
-            if(arr_ai[ii].active==false || arr_ai[ii].state!=DAMAGED)continue;
-            if(rectsoverlap(    p[i].x,
-                                p[i].y,
-                                p[i].w,
-                                p[i].h,
-                                arr_ai[ii].x,
-                                arr_ai[ii].y,
-                                arr_ai[ii].w,
-                                arr_ai[ii].h)){
-            arr_ai[ii].active=false;
-            createaitrajectory(arr_ai[ii].x,arr_ai[ii].y,p[i].facing);
-            }
+            if(arr_ai[ii].active==false)continue;
+            if(arr_ai[ii].state==DAMAGED || arr_ai[ii].state==TRAPPED){
+                if(rectsoverlap(    p[i].x,
+                                    p[i].y,
+                                    p[i].w,
+                                    p[i].h,
+                                    arr_ai[ii].x,
+                                    arr_ai[ii].y,
+                                    arr_ai[ii].w,
+                                    arr_ai[ii].h)){
+                arr_ai[ii].active=false;
+                createaitrajectory(arr_ai[ii].x,arr_ai[ii].y,p[i].facing);
+            }}
+            if(arr_ai[ii].state==ROAMING){
+                if(rectsoverlap(    p[i].x,
+                                    p[i].y,
+                                    p[i].w,
+                                    p[i].h,
+                                    arr_ai[ii].x,
+                                    arr_ai[ii].y,
+                                    arr_ai[ii].w,
+                                    arr_ai[ii].h)){
+                gameover=true;            
+            }}
+
         }
     }
 }
@@ -1701,3 +1719,4 @@ void drawplayerscolling(){
     DrawCircle(x-radius+(radius/1.5),y-radius+(radius/1.5),6,(Color){200,255,200,200});
     DrawCircle(x+(radius/2.1),y+(radius/2.1),2,(Color){200,255,200,200});
 }
+