Final prbly

This commit is contained in:
fl3ka 2024-06-06 10:38:06 -05:00
parent c1be553425
commit 4a50dfd049
3 changed files with 29 additions and 3 deletions

View File

@ -1,9 +1,10 @@
Resursi Resursi
Ncurses: Ncurses:
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html
https://invidious.einfachzocken.eu/watch?v=pjT5wq11ZSE&list=PL2U2TQ__OrQ8jTf0_noNKtHMuYlyxQl4v https://invidious.einfachzocken.eu/watch?v=pjT5wq11ZSE&list=PL2U2TQ__OrQ8jTf0_noNKtHMuYlyxQl4v
Compiling:
g++ -o snakes snakes.cpp -lncurses

Binary file not shown.

View File

@ -9,10 +9,12 @@ const int width = 80;
const int height = 20; const int height = 20;
int X = width/2; int X = width/2;
int Y = height/2; int Y = height/2;
int TailY[100];
int TailX[100];
int sLen = 0;
int sDir = 0; int sDir = 0;
int score = -1; int score = -1;
int count = 0; int count = 0;
int tail = 1;
bool gameover; bool gameover;
WINDOW * win; WINDOW * win;
WINDOW * win2; WINDOW * win2;
@ -71,6 +73,7 @@ void fruit(int &fX, int &fY){
} }
if (score == -1 || (fX == X && fY == Y)){ if (score == -1 || (fX == X && fY == Y)){
score++; score++;
sLen++;
count++; count++;
wrefresh(win2); wrefresh(win2);
fX = 3 + (rand() % 75); fX = 3 + (rand() % 75);
@ -92,6 +95,21 @@ void RenderField(){
} }
void GameUpdate(int &diff, int &fX, int &fY){ void GameUpdate(int &diff, int &fX, int &fY){
int prevX=TailX[0];
int prevY=TailY[0];
int prev2X,prev2Y;
TailX[0]=X;
TailY[0]=Y;
for(int i=1; i<sLen; i++){
prev2X=TailX[i];
prev2Y=TailY[i];
TailX[i]=prevX;
TailY[i]=prevY;
prevX=prev2X;
prevY=prev2Y;
}
switch(sDir){ switch(sDir){
case 97: case 97:
@ -120,13 +138,20 @@ case 66:
break; break;
} }
mvwprintw(win, Y, X, "o"); mvwprintw(win, Y, X, "o");
for(int i=0;i<sLen;i++){
mvwprintw(win, TailY[i], TailX[i],"o");
}
for(int i=1; i<sLen; i++){
if (TailY[i]==Y && TailX[i]==X)
gameover=true;
}
mvwprintw(win2, 1, 3, "Score: %d", score); mvwprintw(win2, 1, 3, "Score: %d", score);
fruit(fX, fY); fruit(fX, fY);
wrefresh(win2); wrefresh(win2);
wrefresh(win); wrefresh(win);
if (count >= 5 && diff != 50){ if (count >= 5 && diff != 50){
count = 0; count = 0;
diff -= 30;} diff -= 50;}
this_thread::sleep_for(chrono::milliseconds(diff)); this_thread::sleep_for(chrono::milliseconds(diff));
} }