1 //Lee. 控制台 贪吃蛇 2 //测试版本1.1 3 //解决几个问题,1.为什么Map[79][24] 地图的横坐标都要用X * 2的形式,, 4 // 而纵坐标的1却表示两个字节。 5 /* (即横坐标1表示一个宽度,但是纵坐标的1表示两个宽度) 6 因为是字符游戏,地图并不是那么重要,只要有个标记能让玩家看清边界就行了. 但是 7 根据我的经验,控制台中的一行的高度大约为一列的宽度的两倍. 换句话说,在控制台中,一 8 个1×1的格子,其实是个长方形,它的高度为宽度的两倍. 因此,为了美观起见,我的横坐标 9 (列值)一律使用双倍值,这样看上去就是一个匀称的方格子. ASCII 字符全都是一个字符宽 10 度的,因此,我在本文接下来的部分中,统一使用中文宽字符来进行布局. 典型的中文布局符 11 号有以下这些: 12 ◆◇□■●●★☆▲△¤◎+┏┛┗┓━┃┫┣┳┻╋ 13 */ 14 // 2. 光标隐藏函数有什么用,好像不需要这个函数也没有影响。 15 // 3. Key()函数 16 下载地址:http://pan.baidu.com/share/link?shareid=405907771&uk=3325080974,包括pcc32库文件和源文件。 17 18 #include<iostream> 19 #include<windows.h> 20 #include<conio.h> 21 #include<time.h> 22 #include<stdlib.h> 23 #include "mmsystem.h" 24 #pragma comment(lib,"winmm.lib") 25 #include"pcc32.h" 26 #pragma comment(lib, "pcc32_vc6.lib") 27 28 using namespace std; 29 30 #define UP 72 //定义上下左右常量 31 #define DOWN 80 32 #define LEFT 75 33 #define RIGHT 77 34 #define ESC 27 35 #define SPACE 32 //空格 36 #define ENTER 13 //回车 37 38 int X, Y;//食物坐标 39 40 int Map[79][24]={{0}}; //地图尺寸,其实有食物记为1 41 int over = 0; //用来标记游戏结束 42 int score = 0; //记录分数 43 int speed = 130; //记录速度 44 int ColoArray[15]={15,1,2,3,4,5,6,7,8,9,10,11,12,13,14}; //自己定义的用来控制颜色的数组 45 struct Snake 46 { 47 int x, y; //坐标 48 int direction; //方向 49 }Snake[100]; //蛇最多100个节点 50 51 int length = 3; //初始化蛇的长度为3 52 int Key_Menu; //开始菜单界面用的零时按键 53 54 void GamePrint(); //游戏开始画面函数 55 void Gameinit(); //游戏初始化函数 56 void Sweep_Screem(); //清屏函数 57 void Gotoxy(int , int); //光标移动函数 58 void Hid_Cursor(); //光标隐藏函数 59 void Snake_Move(); //蛇运动函数 60 int Create_Food(); //食物产生函数 61 void Pwall(); //画墙函数 62 void Key(); //键盘操作和处理函数 63 void Hit_Wall(); //判断是否撞墙 64 void Eat_Itself(); //判断是否咬到自己 65 void Whether_Eat(); //判断蛇是否吃到食物 66 void GameRun(); //游戏运行函数 67 void SurFace(); 68 void GameOver(); 69 void Pause(); //游戏暂停函数 70 void MyCount1(); //提示边栏,用来做一些提示 71 void MyCount2(); //统计边栏,用来做一些统计 72 void Menu( int ); //开始界面 73 void Inti_Data(); //初始化数据 74 75 int main() //主函数 76 { 77 START: 78 Inti_Data(); 79 fixConsoleSize(18,15); 80 Hid_Cursor(); 81 SurFace(); 82 PlaySound(TEXT("m22.wav"), NULL, SND_FILENAME | SND_ASYNC ); 83 fixConsoleSize(105,25); 84 GamePrint(); 85 Gameinit(); 86 GameRun(); 87 while(over) //如果游戏结束了,是否重新开始。按R键为重新开始 88 { 89 int t=getch(); 90 if(t == 'r'||t == 'R') 91 { 92 system("cls"); 93 goto START; 94 } 95 } 96 return 0; 97 } 98 99 100 void GamePrint() //游戏开始画面函数(先是欢迎界面,然后是游戏规则,然后是画墙) 101 { 102 Gotoxy(36,8); 103 printf("┏┅┅┅┅┅┅┅┅┅┅┅┅┅┓"); 104 Gotoxy(36,9); 105 printf("┠ Welcome to RedSnake. ┨"); 106 Gotoxy(36,10); 107 printf("┠ by_Lee. ┨"); 108 Gotoxy(36,11); 109 printf("┗┅┅┅┅┅┅┅┅┅┅┅┅┅┛"); 110 Sleep(2000); 111 Sweep_Screem(); 112 Gotoxy(41, 7); 113 printf("┏┯┯┯┯┯┯┯┓"); 114 Gotoxy(41, 8); 115 printf("┠ Game Tips ┨"); 116 Gotoxy(41, 9); 117 printf("┠ ↑ Up ┨"); 118 Gotoxy(41, 10); 119 printf("┠ ↓ Down ┨"); 120 Gotoxy(41, 11); 121 printf("┠ ← Left ┨"); 122 Gotoxy(41, 12); 123 printf("┠ → Right ┨"); 124 Gotoxy(41, 13); 125 printf("┠ ESC Exit ┨"); 126 Gotoxy(41, 14); 127 printf("┠ SPACE Pause ┨"); 128 Gotoxy(41, 15); 129 printf("┗┷┷┷┷┷┷┷┛"); 130 131 Sleep(2200); 132 Sweep_Screem(); 133 Pwall(); //画墙函数 134 MyCount1(); //画边栏1 135 MyCount2(); //画边栏2 136 Sleep(1100); 137 } 138 139 140 void Gameinit() //游戏初始化 141 { 142 Snake[0].x = 10; // ■■□ 实际上是固定了初始蛇的位置 143 Snake[0].y = 12; 144 Snake[1].x = 8; 145 Snake[1].y = 12; 146 Snake[2].x = 6; 147 Snake[2].y = 12; 148 Snake[0].direction = RIGHT; //默认蛇的初始状态为向右运动 149 Gotoxy(10, 12); //根据蛇的位置跳转,并打印蛇头和蛇身 150 printf("□"); 151 Gotoxy(8, 12); 152 printf("■"); 153 Gotoxy(6, 12); 154 printf("■"); 155 } 156 157 158 void Sweep_Screem()//清屏函数 159 { 160 int i; 161 Gotoxy(0, 0); 162 for(i = 0;i < 25; i++) 163 { 164 printf(" "); 165 } 166 } 167 168 void Gotoxy(int x, int y)//移动光标 169 { 170 COORD coord; 171 coord.X=x; 172 coord.Y=y; 173 SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); 174 } 175 176 void Hid_Cursor() //光标隐藏函数 177 { 178 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); 179 CONSOLE_CURSOR_INFO cci; 180 GetConsoleCursorInfo(hOut,&cci); 181 cci.bVisible=0;//赋1为显示,赋0为隐藏 182 SetConsoleCursorInfo(hOut,&cci); 183 } 184 185 186 void Snake_Move() //蛇运动函数 187 { 188 int i; 189 srand(time(NULL)); 190 Gotoxy(Snake[0].x, Snake[0].y); 191 setTextColor(ColoArray[rand()%14]); 192 printf("□"); 193 Gotoxy(Snake[1].x, Snake[1].y); 194 setTextColor(ColoArray[rand()%14]); 195 printf("■"); 196 Whether_Eat(); //检查是否吃到食物,如果吃到食物,蛇头坐标Map[Snake[0].x][Snake[0].y] = 0; 197 setTextColor(ColoArray[rand()%14]); 198 Create_Food(); //重新随机出一个食物,并且蛇的长度增加1,且新的蛇头产生 199 Gotoxy(Snake[length].x, Snake[length].y); 200 printf(" "); //消除原来的蛇尾。 201 //判断蛇是否吃到食物,如果吃到,则再Create一个食物 202 // Gotoxy(0, 0); //有BUG ,不知道怎么回事 203 // printf("■"); //有BUG ,不知道怎么回事 204 205 Eat_Itself(); //判断蛇是否咬到自己 206 for(i = length; i > 0; i--) //移动蛇的坐标 207 Snake[i] = Snake[i-1]; 208 209 Key(); //判断用户的键盘输入并进行处理 210 } 211 212 int Create_Food() //食物产生函数 213 { 214 if(length >= 40 ) 215 return 0; 216 int i; 217 if(Map[X][Y] == 0) 218 { 219 srand((unsigned int)time(0) + X);//等同于srand(time(0))或者srand(time(NULL))或者srand((int)time(0)),因为最终都要被强制转换为unsigned int; 220 X = (rand() % 38 + 1) * 2; 221 //X = rand() % 76 ;错误为什么? 222 223 srand((unsigned int)time(0) + Y + rand()); 224 Y = rand() % 23 + 1; 225 for(i = 0; i < length; i++) 226 if(Snake[i].x == X && Snake[i].y == Y) 227 { 228 i = -1; 229 break; 230 } 231 if(i != -1) 232 { 233 Map[X][Y] = 1; 234 Gotoxy(X, Y); 235 srand(time(NULL)); 236 setTextColor(ColoArray[rand()%14]); 237 printf("■"); 238 } 239 } 240 return 0; 241 } 242 243 void Whether_Eat() //判断蛇是否吃到食物 244 { 245 if(Map[Snake[0].x][Snake[0].y] == 1) 246 { 247 length++; 248 score += 10; 249 if(speed>45) 250 { 251 speed -= length/4; 252 } 253 setTextColor(WHITE); 254 Gotoxy(80,16); 255 printf("┠ Score: %4d ┨", score); 256 Gotoxy(80,15); 257 printf("┠ length: %3d ┨",length); 258 Gotoxy(80,17); 259 printf("┠ Speed: %3d ┨", speed); 260 Map[Snake[0].x][Snake[0].y] = 0; 261 } 262 } 263 264 void Eat_Itself() //判断蛇是否咬到自己 265 { 266 int i; 267 for(i = 3; i < length; i++) 268 { 269 if(Snake[0].x == Snake[i].x && Snake[0].y == Snake[i].y) 270 { 271 over=1; 272 break; 273 } 274 } 275 } 276 277 void Hit_Wall() //判断是否撞墙 278 { 279 if(Snake[0].x == 0) Snake[0].x = 76; 280 if(Snake[0].x == 78) Snake[0].x = 2; 281 if(Snake[0].y == 0) Snake[0].y = 23; 282 if(Snake[0].y == 24) Snake[0].y = 1; 283 } 284 285 286 void Key() 287 { 288 if(_kbhit())//判断是否按键 289 { 290 int ch = _getch(); 291 if(ch == 224)//判断按的是不是方向键 292 { 293 ch = _getch(); 294 if(ch+Snake[0].direction != 152)//判断按键是否是反方向 295 Snake[0].direction = ch;//如果不是就改变蛇头方向 296 } 297 else if(ch == 27)//判断用户是否退出 298 { 299 300 Gotoxy(30,12); 301 setTextColor(WHITE); 302 printf(" Successful Exit! "); 303 exit(0); 304 } 305 else if(ch == 32) 306 { 307 Pause(); 308 } 309 } 310 switch(Snake[0].direction) 311 { 312 case 72: Snake[0].y-=1; break; 313 case 80: Snake[0].y+=1; break; 314 case 75: Snake[0].x-=2; break; 315 case 77: Snake[0].x+=2; break; 316 } 317 } 318 319 /*void Key() //同方向将会出现问题 320 { 321 if(kbhit() != 0) 322 { 323 while(kbhit() != 0) 324 { 325 Snake[0].direction = getch(); 326 } 327 } 328 switch(Snake[0].direction) 329 { 330 case 72: Snake[0].y-=1; break; 331 case 80: Snake[0].y+=1; break; 332 case 75: Snake[0].x-=2; break; 333 case 77: Snake[0].x+=2; break; 334 } 335 } 336 */ 337 338 void Pwall() //画墙函数 339 { 340 srand(time(NULL)); 341 int i, j; 342 for(i = 39,j = 0; j < 39; i--, j++) 343 { 344 setTextColor(ColoArray[rand()%14]); 345 Gotoxy(j*2, 0); 346 printf("■"); 347 if(j < 24) 348 { 349 setTextColor(ColoArray[rand()%14]); 350 Gotoxy(78, j); 351 printf("■"); 352 } 353 Gotoxy(i*2, 24); 354 printf("■"); 355 if(i > 15) 356 { 357 setTextColor(ColoArray[rand()%14]); 358 Gotoxy(0, i-15); 359 printf("■"); 360 } 361 Sleep(40); 362 } 363 Gotoxy(52,24); 364 setTextColor(WHITE); 365 printf("RedSnake v1.1 by_Lee"); 366 } 367 368 void GameRun() //游戏运行函数 369 { 370 while(!over) 371 { 372 Snake_Move(); //控制蛇的运动 373 Hit_Wall(); //判断是否撞墙 374 GameOver(); 375 Sleep(speed); //控制身的运动速度 376 377 } 378 } 379 380 void SurFace()//18,15 381 { 382 Menu(1); 383 int keytemp = 0; 384 while(1) 385 { 386 387 int temp1 = getch(); 388 if(temp1 != UP && temp1 != DOWN && temp1 != ENTER) 389 continue; 390 else 391 { 392 if(temp1 == UP) 393 { 394 keytemp -= 1; 395 if(keytemp < 0) 396 keytemp += 4; 397 } 398 else if(temp1 == DOWN) 399 { 400 keytemp += 1; 401 if(keytemp > 3) 402 { 403 keytemp %= 4; 404 } 405 } 406 else if(temp1 == ENTER) 407 { 408 if(keytemp == 0) 409 { 410 system("cls"); 411 break; 412 } 413 if(keytemp == 1) 414 { 415 Menu(5); 416 while(getch() == ENTER) 417 { 418 break; 419 } 420 } 421 if(keytemp == 2) 422 { 423 Menu(6); 424 while(getch() == ENTER) 425 { 426 break; 427 } 428 } 429 if(keytemp == 3) 430 exit(0); 431 } 432 switch (keytemp) 433 { 434 case 0: Menu(1); break; 435 case 1: Menu(2); break; 436 case 2: Menu(3); break; 437 case 3: Menu(4); break; 438 } 439 } 440 } 441 } 442 443 /*void Snake_Auto_Move(char temp) 444 { 445 int i; 446 Gotoxy(Snake[0].x, Snake[0].y); 447 printf("□"); 448 Gotoxy(Snake[1].x, Snake[1].y); 449 printf("■"); 450 Gotoxy(Snake[length].x, Snake[length].y); 451 printf(" "); 452 do 453 { 454 Whether_Eat(); //判断蛇是否吃到食物 455 Eat_Itself(); //判断蛇是否咬到自己 456 for(i = length; i > 0; i--) //移动蛇的坐标 457 Snake[i] = Snake[i-1]; 458 Create_Food(); 459 switch(temp) 460 { 461 case 72: Snake[0].y-=1; break; 462 case 80: Snake[0].y+=1; break; 463 case 75: Snake[0].x-=2; break; 464 case 77: Snake[0].x+=2; break; 465 } 466 }while((!kbhit() )&& (!over)); 467 } 468 */ 469 470 void GameOver() 471 { 472 if(length == 40) 473 { 474 system("cls"); 475 Gotoxy(28, 12); 476 setTextColor(WHITE); 477 PlaySound(TEXT("hali.WAV"), NULL, SND_FILENAME | SND_ASYNC ); 478 Gotoxy(38, 8); 479 printf("┏┯┯┯┯┯┯┯┯┯┯┯┓"); 480 Gotoxy(38, 9); 481 printf("┠ Congratulations. ┨"); 482 Gotoxy(38, 10); 483 printf("┠ You win. ┨"); 484 Gotoxy(38, 11); 485 printf("┠ Enter R to Return ┨"); 486 Gotoxy(38, 12); 487 printf("┗┷┷┷┷┷┷┷┷┷┷┷┛"); 488 over = 1; 489 } 490 else if(over) 491 { 492 system("cls"); 493 PlaySound(TEXT("gameover.wav"), NULL, SND_FILENAME | SND_ASYNC ); 494 setTextColor(WHITE); 495 Gotoxy(38, 8); 496 printf("┏┯┯┯┯┯┯┯┯┯┯┯┓"); 497 Gotoxy(38, 9); 498 printf("┠ Game Over. ┨"); 499 Gotoxy(38, 10); 500 printf("┠ Your score is %4d ┨", score); 501 Gotoxy(38, 11); 502 printf("┠ Enter R to try again ┨"); 503 Gotoxy(38, 12); 504 printf("┗┷┷┷┷┷┷┷┷┷┷┷┛"); 505 } 506 } 507 508 void Pause() //用于暂停的函数 509 { 510 setTextColor(WHITE); 511 Gotoxy(35,12); 512 printf(" Pause. "); 513 while(1) 514 { 515 516 int c = getch(); 517 if(c == 32) 518 { 519 Gotoxy(35,12); 520 printf(" "); 521 break; 522 } 523 } 524 } 525 526 void MyCount1() 527 { 528 setTextColor(WHITE); 529 Gotoxy(80,1); 530 printf("┏┅┅┅┅┅┅┅┅┅┅┓"); 531 Gotoxy(80,2); 532 printf("┠ ┨"); 533 Sleep(25); 534 Gotoxy(80,3); 535 printf("┠ ↑ Up ┨"); 536 Sleep(25); 537 Gotoxy(80,4); 538 printf("┠ ↓ Down ┨"); 539 Sleep(25); 540 Gotoxy(80,5); 541 printf("┠ ← Left ┨"); 542 Sleep(25); 543 Gotoxy(80,6); 544 printf("┠ → Right ┨"); 545 Sleep(25); 546 Gotoxy(80,7); 547 printf("┠ ESC Exit ┨"); 548 Sleep(25); 549 Gotoxy(80,8); 550 printf("┠ SPACE Pause ┨"); 551 Sleep(25); 552 Gotoxy(80,9); 553 printf("┠ R Restart ┨"); 554 Sleep(25); 555 Gotoxy(80,10); 556 printf("┠ ┨"); 557 Gotoxy(80,11); 558 printf("┗┅┅┅┅┅┅┅┅┅┅┛"); 559 560 561 } 562 563 void MyCount2() 564 { 565 setTextColor(WHITE); 566 Gotoxy(80,13); 567 printf("┏┅┅┅┅┅┅┅┅┅┅┓"); 568 Gotoxy(80,14); 569 printf("┠ Statistics ┨"); 570 Sleep(25); 571 Gotoxy(80,15); 572 printf("┠ length: %3d ┨",length); 573 Sleep(25); 574 Gotoxy(80,16); 575 printf("┠ Score: %4d ┨", score); 576 Sleep(25); 577 Gotoxy(80,17); 578 printf("┠ Speed: %3d ┨",speed); 579 Sleep(25); 580 Gotoxy(80,18); 581 printf("┠ Just do it. ┨"); 582 Sleep(25); 583 Gotoxy(80,19); 584 printf("┠ Author : ┨"); 585 Sleep(25); 586 Gotoxy(80,20); 587 printf("┠ China_Lee ┨"); 588 Sleep(25); 589 Gotoxy(80,21); 590 printf("┠ shijie Weng ┨"); 591 Sleep(25); 592 Gotoxy(80,22); 593 printf("┠ ┨"); 594 Gotoxy(80,23); 595 printf("┗┅┅┅┅┅┅┅┅┅┅┛"); 596 } 597 598 void Menu( int n) 599 { 600 if(n==1) 601 { 602 603 system("cls"); 604 Gotoxy(5,0); 605 printf("RedSnake!"); 606 PlaySound(TEXT("m1.wav"), NULL, SND_FILENAME | SND_ASYNC ); 607 Gotoxy(2,2); 608 setTextColor(WHITE); 609 printf("┏┯┯┯┯┯┓"); 610 Gotoxy(2,3); 611 printf("┠ 开始游戏 ┨"); 612 Gotoxy(2,4); 613 printf("┗┷┷┷┷┷┛"); 614 Gotoxy(2,5); 615 setTextColor(DARKGRAY); 616 printf("┌─————┐"); 617 Gotoxy(2,6); 618 printf("├ 帮助 ┤"); 619 Gotoxy(2,7); 620 printf("└—————┘"); 621 Gotoxy(2,8); 622 printf("┌─————┐"); 623 Gotoxy(2,9); 624 printf("├ 关于 ┤"); 625 Gotoxy(2,10); 626 printf("└—————┘"); 627 Gotoxy(2,11); 628 printf("┌─————┐"); 629 Gotoxy(2,12); 630 printf("├ 退出游戏 ┤"); 631 Gotoxy(2,13); 632 printf("└—————┘"); 633 } 634 if(n==2) 635 { 636 system("cls"); 637 PlaySound(TEXT("m1.wav"), NULL, SND_FILENAME | SND_ASYNC ); 638 Gotoxy(5,0); 639 setTextColor(DARKGRAY); 640 printf("RedSnake!"); 641 Gotoxy(2,2); 642 printf("┌─————┐"); 643 Gotoxy(2,3); 644 printf("├ 开始游戏 ┤"); 645 Gotoxy(2,4); 646 printf("└—————┘"); 647 Gotoxy(2,5); 648 setTextColor(WHITE); 649 printf("┏┯┯┯┯┯┓"); 650 Gotoxy(2,6); 651 printf("┠ 帮助 ┨"); 652 Gotoxy(2,7); 653 printf("┗┷┷┷┷┷┛"); 654 Gotoxy(2,8); 655 setTextColor(DARKGRAY); 656 printf("┌─————┐"); 657 Gotoxy(2,9); 658 printf("├ 关于 ┤"); 659 Gotoxy(2,10); 660 printf("└—————┘"); 661 Gotoxy(2,11); 662 printf("┌─————┐"); 663 Gotoxy(2,12); 664 printf("├ 退出游戏 ┤"); 665 Gotoxy(2,13); 666 printf("└—————┘"); 667 } 668 if(n==3) 669 { 670 system("cls"); 671 PlaySound(TEXT("m1.wav"), NULL, SND_FILENAME | SND_ASYNC ); 672 Gotoxy(5,0); 673 setTextColor(DARKGRAY); 674 printf("RedSnake!"); 675 Gotoxy(2,2); 676 printf("┌─————┐"); 677 Gotoxy(2,3); 678 printf("├ 开始游戏 ┤"); 679 Gotoxy(2,4); 680 printf("└—————┘"); 681 Gotoxy(2,5); 682 printf("┌─————┐"); 683 Gotoxy(2,6); 684 printf("├ 帮助 ┤"); 685 Gotoxy(2,7); 686 printf("└—————┘"); 687 Gotoxy(2,8); 688 setTextColor(WHITE); 689 printf("┏┯┯┯┯┯┓"); 690 Gotoxy(2,9); 691 printf("┠ 关于 ┨"); 692 Gotoxy(2,10); 693 printf("┗┷┷┷┷┷┛"); 694 Gotoxy(2,11); 695 setTextColor(DARKGRAY); 696 printf("┌─————┐"); 697 Gotoxy(2,12); 698 printf("├ 退出游戏 ┤"); 699 Gotoxy(2,13); 700 printf("└—————┘"); 701 } 702 if(n==4 ) 703 { 704 system("cls"); 705 PlaySound(TEXT("m1.wav"), NULL, SND_FILENAME | SND_ASYNC ); 706 setTextColor(DARKGRAY); 707 Gotoxy(5,0); 708 printf("RedSnake!"); 709 Gotoxy(2,2); 710 printf("┌─————┐"); 711 Gotoxy(2,3); 712 printf("├ 开始游戏 ┤"); 713 Gotoxy(2,4); 714 printf("└—————┘"); 715 Gotoxy(2,5); 716 printf("┌─————┐"); 717 Gotoxy(2,6); 718 printf("├ 帮助 ┤"); 719 Gotoxy(2,7); 720 printf("└—————┘"); 721 Gotoxy(2,8); 722 printf("┌─————┐"); 723 Gotoxy(2,9); 724 printf("├ 关于 ┤"); 725 Gotoxy(2,10); 726 printf("└—————┘"); 727 Gotoxy(2,11); 728 setTextColor(WHITE); 729 printf("┏┯┯┯┯┯┓"); 730 Gotoxy(2,12); 731 printf("┠ 退出游戏 ┨"); 732 Gotoxy(2,13); 733 printf("┗┷┷┷┷┷┛"); 734 } 735 if(n==5) 736 { 737 system("cls"); 738 PlaySound(TEXT("m1.wav"), NULL, SND_FILENAME | SND_ASYNC ); 739 Gotoxy(1,3); 740 printf("┏┯┯┯┯┯┯┓"); 741 Gotoxy(1,4); 742 printf("┠ Game Tips ┨"); 743 Gotoxy(1,5); 744 printf("┠ ↑ Up ┨"); 745 Gotoxy(1,6); 746 printf("┠ ↓ Down ┨"); 747 Gotoxy(1,7); 748 printf("┠ ← Left ┨"); 749 Gotoxy(1,8); 750 printf("┠ → Right ┨"); 751 Gotoxy(1,9); 752 setTextColor(WHITE); 753 printf("┠ Return ┨"); 754 Gotoxy(1,10); 755 printf("┗┷┷┷┷┷┷┛"); 756 setTextColor(DARKGRAY); 757 } 758 if(n==6) 759 { 760 system("cls"); 761 PlaySound(TEXT("m1.wav"), NULL, SND_FILENAME | SND_ASYNC ); 762 Gotoxy(1,3); 763 printf("┏┯┯┯┯┯┯┓"); 764 Gotoxy(1,4); 765 printf("┠ RedSnake ┨"); 766 Gotoxy(1,5); 767 printf("┠ By Lee. ┨"); 768 Gotoxy(1,6); 769 printf("┠ 版权所有 ┨"); 770 Gotoxy(1,7); 771 printf("┠ 盗版必究 ┨"); 772 Gotoxy(1,8); 773 printf("┠ 版本: ┨"); 774 Gotoxy(1,9); 775 setTextColor(WHITE); 776 printf("┠ 1.1V ┨"); 777 Gotoxy(1,10); 778 printf("┗┷┷┷┷┷┷┛"); 779 setTextColor(DARKGRAY); 780 } 781 } 782 783 void Inti_Data() 784 { 785 over = 0; //初始化over 786 length = 3; //初始化长度 787 speed = 130; //初始化速度 788 score = 0; //初始化分数 789 memset( Map , 0 ,sizeof(Map)); //初始化地图食物 790 }