.
This commit is contained in:
parent
f65249e597
commit
a7502e370c
BIN
Snakes/snakes
BIN
Snakes/snakes
Binary file not shown.
@ -2,21 +2,21 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <ncurses.h>
|
#include <ncurses.h>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
const int width = 80;
|
const int width = 80;
|
||||||
const int height = 20;
|
const int height = 20;
|
||||||
int snakeX = width/2;
|
int X = width/2;
|
||||||
int snakeY = height/2;
|
int Y = height/2;
|
||||||
|
int sDir = 0;
|
||||||
|
int score = -1;
|
||||||
|
int count = 0;
|
||||||
|
int tail = 1;
|
||||||
bool gameover;
|
bool gameover;
|
||||||
|
WINDOW * win;
|
||||||
|
WINDOW * win2;
|
||||||
void start(){
|
/*void draw(){
|
||||||
gameover=false;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
void draw(){
|
|
||||||
//Change "clear" to "cls" if compiling for Windows
|
//Change "clear" to "cls" if compiling for Windows
|
||||||
system("clear");
|
system("clear");
|
||||||
for(int i=0; i<width; i++){
|
for(int i=0; i<width; i++){
|
||||||
@ -38,52 +38,117 @@ for(int i=0; i<width; i++){
|
|||||||
cout << "#";
|
cout << "#";
|
||||||
}
|
}
|
||||||
cout<<endl;
|
cout<<endl;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
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);
|
||||||
|
wgetch(win);
|
||||||
|
endwin();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameUpdate(int snakeXmv, WINDOW * win){
|
void UserInput(int tmpv) {
|
||||||
int c = getch();
|
nodelay(stdscr, TRUE);
|
||||||
printw("%d", c);
|
tmpv = getch();
|
||||||
if(c == 97 || c == 68){
|
if (tmpv != ERR) {
|
||||||
for(int i; i < snakeX; snakeXmv--){
|
sDir = tmpv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fruit(int &fX, int &fY){
|
||||||
|
if (score != -1) {
|
||||||
|
mvwprintw(win, fY, fX, "F");
|
||||||
|
}
|
||||||
|
if (score == -1 || (fX == X && fY == Y)){
|
||||||
|
score++;
|
||||||
|
count++;
|
||||||
|
wrefresh(win2);
|
||||||
|
fX = 3 + (rand() % 75);
|
||||||
|
fY = 3 + (rand() % 15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderField(){
|
||||||
|
initscr();
|
||||||
|
noecho();
|
||||||
curs_set(0);
|
curs_set(0);
|
||||||
mvwprintw(win,snakeY,snakeXmv,"o");
|
win = newwin(height, width, 0, 0);
|
||||||
mvwprintw(win,snakeY,snakeXmv+1," ");
|
win2 =newwin(3,width,20,0);
|
||||||
|
box(win2,20,0);
|
||||||
|
box(win, 0, 0);
|
||||||
wrefresh(win);
|
wrefresh(win);
|
||||||
this_thread::sleep_for(chrono::milliseconds(1000));
|
wrefresh(win2);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(c == 67 || c == 100){
|
|
||||||
for(int i; i < snakeX; snakeXmv++){
|
void GameUpdate(int &diff, int &fX, int &fY){
|
||||||
curs_set(0);
|
|
||||||
mvwprintw(win,snakeY,snakeXmv,"o");
|
switch(sDir){
|
||||||
mvwprintw(win,snakeY,snakeXmv-1," ");
|
case 97:
|
||||||
wrefresh(win);
|
case 68:
|
||||||
this_thread::sleep_for(chrono::milliseconds(1000));
|
X--;
|
||||||
}
|
if (X <= 0)
|
||||||
}
|
gameover=true;
|
||||||
|
break;
|
||||||
|
case 100:
|
||||||
|
case 67:
|
||||||
|
X++;
|
||||||
|
if (X >= 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");
|
||||||
|
mvwprintw(win2, 1, 3, "Score: %d", score);
|
||||||
|
fruit(fX, fY);
|
||||||
|
wrefresh(win2);
|
||||||
|
wrefresh(win);
|
||||||
|
if (count >= 5 && diff != 50){
|
||||||
|
count = 0;
|
||||||
|
diff -= 10;}
|
||||||
|
this_thread::sleep_for(chrono::milliseconds(diff));
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
int snakeXmv = snakeX;
|
int tmpv;
|
||||||
|
int fX;
|
||||||
|
int fY;
|
||||||
|
int diff = 400;
|
||||||
|
start();
|
||||||
|
|
||||||
|
|
||||||
while(!gameover){
|
while(!gameover){
|
||||||
start();
|
UserInput(tmpv);
|
||||||
initscr();
|
RenderField();
|
||||||
WINDOW * win = newwin(height, width, 0, 0);
|
GameUpdate(diff,fX,fY);
|
||||||
refresh();
|
//cout<<sDir<<endl;
|
||||||
|
|
||||||
box(win, 0, 0);
|
|
||||||
mvwprintw(win,snakeY,snakeXmv,"o");
|
|
||||||
wrefresh(win);
|
|
||||||
|
|
||||||
GameUpdate(snakeXmv, win);
|
|
||||||
cout << snakeXmv << endl;
|
|
||||||
getch();
|
|
||||||
endwin();
|
|
||||||
}
|
}
|
||||||
|
gover();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user