吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5148|回复: 14
收起左侧

[C&C++ 转载] 贪吃蛇源码,要的来拿呗

[复制链接]
狂奔小兔 发表于 2015-2-1 13:34
/*********************
*****最简单贪吃蛇****
-------------------------------------
****by_狂奔小兔****
********************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define H 15
#define W 30
#define N 10
void move();
void start();
void draw();
void getturn();
void turn(char direction);
void judge();
void getfood();
void over();
int a, b, x, y, l = 0, n, i, j;
int x1, y1;
char *head, *tail, *tt, map[H][W];
char *belly[H * W], *food;
char left, right, front, back;
int main()
{
        start();
}

void start()
{
        for (i = 0; i != H; ++i)
                for (j = 0; j != W; ++j)
                {
                        if ((i == 0) || (i == H - 1) || (j == 0) || (j == W - 1))
                                map[i][j] = '9';
                        else
                                map[i][j] = '0';
                }
        x = W / 2, y = H / 2;
        head = &map[y][x + 1];
        belly[l] = &map[y][x];
        tail = &map[y][x - 1];
        *head = '1';
        *belly[0] = '2';
        *tail = '3';
        left = 'w', right = 's';
        front = 'd', back = 'a';
        turn(front);
        getfood();
                draw();
        while (1)
        {
                usleep(1000000/N);
                getturn();
                move();
                judge();
                clrscr();
                draw();
        }
}

void getturn()
{
        char t, t1;
        while (kbhit())
        {
                t = getch();
                if (t == left)
                {
                        turn(left);
                        left = back;
                        back = right;
                        right = front;
                        front = t;
                        goto gett;
                }
                else if (t == right)
                {
                        turn(right);
                        right = back;
                        back = left;
                        left = front;
                        front = t;
                        goto gett;
                }
        }
        turn(front);
  gett:;
        while (kbhit())
                t = getch();
}

void getfood()
{
        do
        {
                x1 = random() % (W - 2) + 1;
                y1 = random() % (H - 2) + 1;
        }
        while (map[y1][x1] != '0');
        food = &map[y1][x1];
        *food = '4';
}

void turn(char direction)
{
        switch (direction)
        {
        case 'w':
                --y;
                break;
        case 's':
                ++y;
                break;
        case 'a':
                --x;
                break;
        case 'd':
                ++x;
                break;
        }

}

void move()
{
        tt = belly[l];
        for (i = l; i != 0; --i)
                belly[i] = belly[i - 1];
        belly[0] = head;
        head = &map[y][x];
        *belly[0] = '2';
}

void judge()
{
        switch (*head)
        {
        case '2':;
        case '9':
                over();
                break;
        case '4':
                getfood();
                ++l;
                belly[l] = tt;
                break;
        case '0':
                *head = '1';
                *tail = '0';
                tail = tt;
                *tail = '3';
                break;
        }
}

void draw()
{
        for (i = 0; i != H; ++i)
        {
                for (j = 0; j != W; ++j)
                        switch (map[i][j])
                        {
                        case '0':
                                printf(" ");
                                break;
                        case '9':
                                printf("#");
                                break;
                        case '1':
                                printf("O");
                                break;
                        case '2':
                                printf("o");
                                break;
                        case '3':
                                printf(".");
                                break;
                        case '4':
                                printf("&#9829;");
                                break;
                        }
                printf("\n");
        }
}

void over()
{
        printf("\tGame over!!!\n");
        printf("\t\tAgain?\n");
        getch();
        clrscr();
        start();
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wybdarenjiadao 发表于 2015-2-16 13:46
谢谢分享啊
wldllz 发表于 2015-2-15 15:53
netban 发表于 2015-2-3 17:15
SstudentT 发表于 2015-3-12 13:39
我准备下下来看看。谢谢了!
812737858 发表于 2015-3-17 08:14
运行不了。。
ぁмǐηɡ玥夜 发表于 2015-10-10 14:11
格式请改一下
败笔s 发表于 2015-10-10 19:33
C代码 不知道什么效果,高兴拿去试试
hjgbil 发表于 2015-10-10 23:08 来自手机
学习了!感谢分享!
vigers 发表于 2015-10-17 19:53
提示3个错误,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 13:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表