diff --git a/MeercaChase b/MeercaChase index a365260..cf0736f 100755 Binary files a/MeercaChase and b/MeercaChase differ diff --git a/MeercaChase.cpp b/MeercaChase.cpp index b9340a3..dca0b70 100644 --- a/MeercaChase.cpp +++ b/MeercaChase.cpp @@ -35,10 +35,10 @@ public: int moveSpd=4; float meercaSpd[2] = {0,0}; float meercaPos[2] = {240,240}; + float*meercaPreviousPos=NULL; float neggPos[2] = {}; float*badNeggs=NULL; int badNeggCount=0; - TailData*tail=NULL; int tailSize=0; void assignNeggRandomPos() { @@ -80,15 +80,11 @@ public: srand(432189); assignNeggRandomPos(); if (badNeggs!=NULL) {free(badNeggs);} - if (tail!=NULL) { - for (int i=0;i0) { - tail[0].future_direction[tail[0].futureIndex]=UP; - tail[0].frameCount[tail[0].futureIndex]=TAIL_DISTANCE; - tail[0].futureIndex=(tail[0].futureIndex+1)%TAIL_DISTANCE; - } } if (GetKey(olc::A).bPressed&&(meercaSpd[0]+meercaSpd[1]==0||meercaSpd[1]!=0)) { meercaSpd[0]=-moveSpd; meercaSpd[1]=0; - if (tailSize>0) { - tail[0].future_direction[tail[0].futureIndex]=LEFT; - tail[0].frameCount[tail[0].futureIndex]=TAIL_DISTANCE; - tail[0].futureIndex=(tail[0].futureIndex+1)%TAIL_DISTANCE; - } } if (GetKey(olc::D).bPressed&&(meercaSpd[0]+meercaSpd[1]==0||meercaSpd[1]!=0)) { meercaSpd[0]=moveSpd; meercaSpd[1]=0; - if (tailSize>0) { - tail[0].future_direction[tail[0].futureIndex]=RIGHT; - tail[0].frameCount[tail[0].futureIndex]=TAIL_DISTANCE; - tail[0].futureIndex=(tail[0].futureIndex+1)%TAIL_DISTANCE; - } } if (GetKey(olc::S).bPressed&&(meercaSpd[0]+meercaSpd[1]==0||meercaSpd[0]!=0)) { meercaSpd[0]=0; meercaSpd[1]=moveSpd; - if (tailSize>0) { - tail[0].future_direction[tail[0].futureIndex]=DOWN; - tail[0].frameCount[tail[0].futureIndex]=TAIL_DISTANCE; - tail[0].futureIndex=(tail[0].futureIndex+1)%TAIL_DISTANCE; - } } // called once per frame if (meercaSpd[0]==moveSpd) { @@ -172,43 +148,34 @@ public: for (int i=0;i=1) { + DrawString({16,16},to_string(meercaPreviousPos[3])+" "+to_string(meercaPreviousPos[2])+" "+to_string(meercaPreviousPos[1])+" "+to_string(meercaPreviousPos[0])); + } for (int i=0;i=0;i-=2) { + if (i==0) { + meercaPreviousPos[i]=meercaPos[0]; + meercaPreviousPos[i+1]=meercaPos[1]; + } else { + meercaPreviousPos[i]=meercaPreviousPos[i-2]; + meercaPreviousPos[i+1]=meercaPreviousPos[i-1]; + } + } meercaPos[0]+=meercaSpd[0]; meercaPos[1]+=meercaSpd[1]; if (abs(meercaPos[0]-neggPos[0])<8&&abs(meercaPos[1]-neggPos[1])<8) { assignNeggRandomPos(); - tail=(TailData*)realloc(tail,sizeof(TailData)*++tailSize); - tail[tailSize-1].future_direction = (char*)malloc(sizeof(char)*TAIL_DISTANCE); - tail[tailSize-1].pos = (int*)malloc(sizeof(int)*2); - tail[tailSize-1].frameCount = (int*)malloc(sizeof(int)*TAIL_DISTANCE); - if (meercaSpd[0]==moveSpd) { - tail[tailSize-1].direction=RIGHT; - } else - if (meercaSpd[0]==-moveSpd) { - tail[tailSize-1].direction=LEFT; - } else - if (meercaSpd[1]==moveSpd) { - tail[tailSize-1].direction=DOWN; - } else - if (meercaSpd[1]==-moveSpd) { - tail[tailSize-1].direction=UP; - } - tail[tailSize-1].pos[0]=meercaPos[0]; - tail[tailSize-1].pos[1]=meercaPos[1]; - for (int i=0;i0) { - tail[i].waitTime--; - } else { - for (int j=0;j=0) { - tail[i].frameCount[j]--; - if (tail[i].frameCount[j]==-1) { - tail[i].direction=tail[i].future_direction[j]; - if (i+1