#include #include #include #include #include using namespace std; const int width = 80; const int height = 20; int X = width/2; int Y = height/2; int TailY[100]; int TailX[100]; int sLen = 0; int sDir = 0; int score = -1; int count = 0; bool gameover; WINDOW * win; WINDOW * win2; void start(){ gameover=false; } void gover(){ initscr(); noecho(); curs_set(0); win = newwin(height, width, 0, 0); box(win, 0, 0); mvwprintw(win,10,35,"GAME OVER"); wrefresh(win); this_thread::sleep_for(chrono::milliseconds(100)); wgetch(win); endwin(); } void UserInput(int &tmpv) { nodelay(stdscr, TRUE); tmpv = getch(); if (tmpv != ERR) { sDir = tmpv; } } void fruit(int &fX, int &fY){ if (score != -1) { mvwprintw(win, fY, fX, "F"); } if (score == -1 || (fX == X && fY == Y)){ score++; sLen++; count++; wrefresh(win2); fX = 3 + (rand() % 75); fY = 3 + (rand() % 15); } } void RenderField(){ initscr(); noecho(); curs_set(0); win = newwin(height, width, 0, 0); win2 =newwin(3,width,20,0); box(win2,20,0); box(win, 0, 0); wrefresh(win); wrefresh(win2); } void manu(){ initscr(); //noecho(); //curs_set(0); win = newwin(height, width, 0, 0); box(win,0,0); mvwprintw(win, 1,17, ".d8888. d8b db .d8b. db dD d88888b .d8888. "); mvwprintw(win, 2,17, "88' YP 888o 88 d8' `8b 88 ,8P' 88' 88' YP "); mvwprintw(win, 3,17, "`8bo. 88V8o 88 88ooo88 88,8P 88ooooo `8bo. "); mvwprintw(win, 4,17, " `Y8b. 88 V8o88 88~~~88 88`8b 88~~~~~ `Y8b. "); mvwprintw(win, 5,17, "db 8D 88 V888 88 88 88 `88. 88. db 8D "); mvwprintw(win, 6,17, "`8888Y' VP V8P YP YP YP YD Y88888P `8888Y' "); mvwprintw(win,10, 35, "-Start Game-"); mvwprintw(win,12,38,"-Exit-"); int cur = wmove(win,12,38); int cur2 = cur; if (cur2 == cur){ while(true){ nodelay(stdscr,TRUE); int inp; int tinp = wgetch(win); if (tinp != ERR){ inp = tinp;} if(inp == 10){ gameover=true; break;} } } wrefresh(win); wgetch(win); endwin(); } 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= 80) gameover=true; break; case 119: case 65: Y--; if (Y <= 0) gameover=true; break; case 115: case 66: Y++; if (Y >= 20) gameover=true; break; } mvwprintw(win, Y, X, "o"); for(int i=0;i= 5 && diff != 50){ count = 0; diff -= 50;} this_thread::sleep_for(chrono::milliseconds(diff)); } int main(){ int tmpv; int fX; int fY; int diff = 400; start(); manu(); while(!gameover){ UserInput(tmpv); RenderField(); GameUpdate(diff,fX,fY); //cout<