字符遊戲--貪吃蛇(智能)

来源:互联网 发布:日本爱知流量计 编辑:程序博客网 时间:2024/06/08 02:59


先藉由自頂向下之邏輯使用偽代碼方式將架構完成

#include<...>int ... ;char ... ;void 生成地圖() ;void 生成蛇() ;void 生成食物() ;void 蛇移動() ;void 畫面刷新() ;void 吃() ;void 避免覆蓋() ;void 碰撞() ;void 輸入() ;生成地圖(){...}生成蛇(){...}生成食物(){...}蛇移動(){...}畫面刷新(){...}吃(){...}避免覆蓋(){...}碰撞(){...}輸入(){...}主程序(){...}

逐步完善代碼

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h>const int W = 12;const int H  = 12;char map[12][12];char key;int direct = 4;int food[2] = {8,7};int head;int snake[400][3];void init(char map[12][12], int snake[400][3]);void makeMap(char map[12][12],int snake[400][3],int food[]);void move(int snake[400][3],int direct);void makeFood(int food[]);void showView(char map[12][12]);int ifEat(int head, int food[2]);int ifReprat(int snake[400][3], int x, int y);int ifBump(int head);void getKey();int main() {    init(map, snake);    while (1) {        getKey();        system("cls");        Sleep(100);        move(snake, direct);        if (!food[0]&&!food[1]) {            makeFood(food);        }        makeMap(map, snake, food);        showView(map);        if (ifBump(head)) {            printf("遊戲結束,你的成績為:%d", head-4);            break;        }        getKey();    }    getchar();    return 0;}void init(char map[12][12], int snake[400][3]) {    %初始蛇頭蛇身    %建造遊戲外框(牆)void showView(char map[12][12]) {    ...}void move(int snake[400][3],int direct) {    %上下左右更改X、Y值    %吃 = 身體 + 1}void makeFood(int food[]) {    %隨機生成食物    %避開蛇身、牆}void makeMap(char map[12][12], int snake[400][3], int food[]) {    %建造遊戲外框(牆)    %新蛇頭蛇身    %食物}int ifEat(int head,int food[2]) {    %身長 + 1}int ifReprat(int snake[400][3],int x,int y) {    ...}int ifBump(int head) {    ...}void getKey() {    %輸入    %方向}

大功告成