add main menu, wall crash detect and score counting

This commit is contained in:
Late Night Defender 2021-10-19 15:13:34 +07:00
parent 2e6ec34afb
commit f31ef37750

View file

@ -9,6 +9,8 @@ using namespace std;
#define termMaxX 145
#define termMaxY 36
#define paMaxX 100
#define paMaxY 30
#define upArrow 65
#define downArrow 66
#define rightArrow 67
@ -54,19 +56,17 @@ void moveSnake(int deltaX, int deltaY, int posX[100], int posY[100], int tempX[2
drawSnake();
sw=0;
}
}
}
void drawFrame(){
for(int i=0;i<30;i++){
for(int j=0;j<100;j++){
if(i==0||i==29){
for(int i=0;i<paMaxY;i++){
for(int j=0;j<paMaxX;j++){
if(i==0||i==(paMaxY-1)){
SetCursorPosition(j,i);
printf("\033[45m \033[0m");
}
else if(j==0||j==99){
else if(j==0||j==(paMaxX-1)){
SetCursorPosition(j,i);
printf("\033[45m \033[0m");
}
@ -74,10 +74,30 @@ void drawFrame(){
}
}
int main () {
int crashWall(int posX, int posY){
if(posX==(paMaxX-1)||posX==0){
return 1;
}
if(posY==(paMaxX-1)||posY==0){
return 1;
}
return 0;
}
int eatFruit(int posX, int posY, int fruitX, int fruitY){
if(posX==fruitX&&posY==fruitY){
return 1;
}
else{
return 0;
}
}
void game(){
clock_t start_t,this_t;
start_t=clock();
int posX[100],posY[100],fruitX,fruitY,ft=0;
int posX[100],posY[100],fruitX,fruitY,snakeLength=2,ft=0;
int tempX[2],tempY[2];
double thistimeMillisec;
srand(time(NULL));
@ -91,14 +111,12 @@ int main () {
noecho();
scrollok(stdscr, TRUE);
nodelay(stdscr, TRUE);
sleep(1);//รอโปรแกรมเปิด
//sleep(1);//รอโปรแกรมเปิด
start_color();
init_pair(1,COLOR_WHITE, COLOR_BLACK);
wbkgd(stdscr, COLOR_PAIR(1));
printf("\e[?25l");//ปิดcursor
for(int i=0;i<100;i++){
posX[i]=-1;
posY[i]=-1;
}
@ -112,12 +130,21 @@ int main () {
while(1){ //เริ่มเกม
this_t=clock();
SetCursorPosition(posX[0],posY[0]);
if(ft<5){//สร้างงูรอบแรกสุด
drawSnake();
drawFrame();
ft++;
}
if(eatFruit(posX[0],posY[0],fruitX,fruitY)==1){
snakeLength++;
fruitX=rand()%98+1;
fruitY=rand()%28+1;
posX[snakeLength-1]=posX[0];
posY[snakeLength-1]=posY[0];
}
SetCursorPosition(0,0);
printf("\033[1;97\033[45mScore: %d\033[0m", snakeLength-2);
input=getch();//รับจากแป้นพิมพ์
if(input=='x'){
break;
@ -149,7 +176,6 @@ int main () {
else if(input=='b'){
lastInput='0';
}
thistimeMillisec=(double)(this_t-start_t)/(double)CLOCKS_PER_SEC*15;
if(((int)thistimeMillisec%10)==1){
if(lastInput=='a'){
@ -182,5 +208,20 @@ int main () {
printf("0");
//system("((speaker-test -t sine -f 700)& pid=$!; sleep 0.1s; kill -9 $pid) > /dev/null");
}
}
/*int mainmenu(){
for(int i=0;i<paMaxY;i++){
for(int j=0;j<paMaxX;j++){
SetCursorPosition(j,i);
printf("\033[100m \033[0m");
}
}
}*/
int main () {
game();
return(0);
}