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


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

#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() {
    %輸入
    %方向
}

大功告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值