日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

字符游戏-贪吃蛇

發(fā)布時(shí)間:2025/1/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符游戏-贪吃蛇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

貪吃蛇是一款十分經(jīng)典的游戲。下面介紹一下字符版本貪吃蛇。

偽代碼框架
輸出字符矩陣
WHILE not 游戲結(jié)束 DO
ch=等待輸入
CASE ch DO
‘A’:左前進(jìn)一步,break
‘D’:右前進(jìn)一步,break
‘W’:上前進(jìn)一步,break
‘S’:下前進(jìn)一步,break
END CASE
輸出字符矩陣
END WHILE
輸出 Game Over!!!

實(shí)現(xiàn)
每一次用戶輸入后,打印一次新的地圖,從而實(shí)現(xiàn)游戲。

char map[12][13] = {"************","*H *","* *","* *","* *","* *","* *","* *","* *","* *","* *","************", };

C語(yǔ)言代碼

#include <stdio.h> #include <windows.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <string.h> #include <time.h> void food(); void show(); void move(); void turn(); void check(); void ini(); int dy[4] = { 0, 1, 0, -1 }; int dx[4] = { -1, 0, 1, 0 }; int sum = 5; int over = 0; int speed; char map[17][17];struct snake {int x, y; int dir; } A[100];void ini() { speed = 500;over = 0;sum = 5;int i, j;for (i = 0; i < 100; i++) { A[i].dir = 0;A[i].x = 0;A[i].y = 0;}A[0].x = 1; A[0].y = 1; A[1].x = 1; A[1].y = 2;A[2].x = 1; A[2].y = 3;A[3].x = 1; A[3].y = 4;A[4].x = 1; A[4].y = 5; A[4].dir = 1;srand(time(0));for (i = 0; i < 17; i++) { for (j = 0; j < 17; j++) {map[i][j] = '*';}}for (i = 1; i < 16; i++) {for (j = 1; j < 16; j++) {map[i][j] = ' ';}}map[A[4].x][A[4].y] = 'H'; for (i = 0; i < sum - 1; i++) { map[A[i].x][A[i].y] = 'X';}food();}void show() { int i, j, x, y;for (i = 0; i < 17; i++) {for (j = 0; j < 17; j++) {printf("%c", map[i][j]);}printf("\n");}while (1) {Sleep(speed); turn();move();if (over) { while (1) {char ch = _getch();if (ch == 113) { return;}else if (ch == 114) { ini();break;}}}system("cls"); for (i = 0; i < 17; i++) { for (j = 0; j < 17; j++) {printf("%c", map[i][j]);}printf("\n");}} }void food() { int x, y;while (1) {x = (int)(15 * rand() / (RAND_MAX + 1.0)); y = (int)(15 * rand() / (RAND_MAX + 1.0));if (map[x][y] == ' ') { map[x][y] = 'O';break;}} }void move() { int i, x, y;int t = sum; check(); if (t == sum) { for (i = 0; i < sum - 1; i++) {if (i == 0) { map[A[i].x][A[i].y] = ' ';A[i].x = A[i + 1].x;A[i].y = A[i + 1].y;}else { A[i].x = A[i + 1].x;A[i].y = A[i + 1].y;}map[A[i].x][A[i].y] = 'X'; }A[sum - 1].x = A[sum - 1].x + dx[A[sum - 1].dir]; A[sum - 1].y = A[sum - 1].y + dy[A[sum - 1].dir];map[A[sum - 1].x][A[sum - 1].y] = 'H'; }else {map[A[sum - 2].x][A[sum - 2].y] = 'X'; A[sum - 1].x = A[sum - 2].x + dx[A[sum - 2].dir]; A[sum - 1].y = A[sum - 2].y + dy[A[sum - 2].dir];A[sum - 1].dir = A[sum - 2].dir; map[A[sum - 1].x][A[sum - 1].y] = 'H'; food();}}void check() { int x, y, i, j;x = A[sum - 1].x + dx[A[sum - 1].dir]; y = A[sum - 1].y + dy[A[sum - 1].dir];if (map[x][y] == '*' || map[x][y] == 'X') { if (x != A[0].x || y != A[0].y) { map[8][4] = 'G'; map[8][5] = 'A'; map[8][6] = 'M'; map[8][7] = 'E'; map[8][9] = 'O'; map[8][10] = 'V'; map[8][11] = 'E'; map[8][12] = 'R';map[8][8] = ' ';system("cls");for (i = 0; i < 17; i++) {for (j = 0; j < 17; j++) {printf("%c", map[i][j]);}printf("\n");}printf("Input 'r' to restart\nInput 'q' to quit\n");over = 1;}}else if (map[x][y] == 'O') {sum++; speed = ((600 - sum * 20)>100) ? (600 - sum * 20) : 100;} }void turn() { if (_kbhit()) {char dir = _getch(); switch (dir) { case 119: A[sum - 1].dir = (A[sum - 1].dir == 2)?2:0; break;case 100: A[sum - 1].dir = (A[sum - 1].dir == 3)?3:1; break;case 115: A[sum - 1].dir = (A[sum - 1].dir == 0)?0:2; break;case 97: A[sum - 1].dir = (A[sum - 1].dir == 1)?1:3; break;}} }int main() {printf("任意鍵開始\n");char ch = _getch();system("cls");ini();show();return 0; }

總結(jié)

以上是生活随笔為你收集整理的字符游戏-贪吃蛇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。