标题:写个游戏给那些感到学C枯燥的孩子玩, 激励其志
只看楼主
我有我梦
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:321
专家分:1128
注 册:2013-5-25
得分:0 
你这里面有错误哦!!!
2013-05-28 21:01
arsonala
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-20
得分:0 
我粘贴了一下,怎么有好多错误啊!!!
2013-05-30 18:03
aaxxop
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2013-5-24
得分:0 
//我把缩进给优化了下,再次感谢原作者
//可以吃自己的贪吃蛇源代码

#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 30
void gotoxy(int x,int y)//位置函数
{
    COORD pos;
    pos.X=2*x;
    pos.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a + 1);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
    int i,j;//初始化围墙
    int wall[N+2][N+2]= {{0}};
    for(i=1; i<=N; i++)
    {
        for(j=1; j<=N; j++)
            wall[i][j]=1;
    }
    color(11);
    for(i=0; i<N+3; i++)
    {
        for(j=0; j<N+3; j++)
        {
            if(wall[i][j])
                cout<<"■";//■
            else cout<<"□" ;//□
        }
        cout<<endl;
    }
    gotoxy(N+3,1);//显示信息
    color(20);
    cout<<"按 W S A D 移动方向"<<endl;
    gotoxy(N+3,2);
    color(20);
    cout<<"按任意键暂停"<<endl;
    gotoxy(N+3,3);
    color(20);
    cout<<"得分:"<<endl;
    apple[0]=rand()%N+1;//苹果
    apple[1]=rand()%N+1;
    gotoxy(apple[0],apple[1]);
    color(12);
    cout<<"●"<<endl;
}
int main()
{
    int i;
    int** snake=NULL;
    int apple[2];
    int score=0;
    int tail[2];
    int len=3;
    char ch='p';
    srand((unsigned)time(NULL));
    init(apple);
    snake=(int**)realloc(snake,sizeof(int*)*len);
    for(i=0; i<len; i++)
        snake[i]=(int*)malloc(sizeof(int)*2);
    for(i=0; i<len; i++)
    {
        snake[i][0]=N/2;
        snake[i][1]=N/2+i;
        gotoxy(snake[i][0],snake[i][1]);
        color(14);
        cout<<"★"<<endl;
    }
    while(1)//进入消息循环
    {
        tail[0]=snake[len-1][0];
        tail[1]=snake[len-1][1];
        gotoxy(tail[0],tail[1]);
        color(11);
        cout<<"■"<<endl;
        for(i=len-1; i>0; i--)
        {
            snake[i][0]=snake[i-1][0];
            snake[i][1]=snake[i-1][1];
            gotoxy(snake[i][0],snake[i][1]);
            color(14);
            cout<<"★"<<endl;
        }
        if(kbhit())
        {
            gotoxy(0,N+2);
            ch=getche();
        }
        switch(ch)
        {
        case 'w':
            snake[0][1]--;
            break;
        case 's':
            snake[0][1]++;
            break;
        case 'a':
            snake[0][0]--;
            break;
        case 'd':
            snake[0][0]++;
            break;
        default:
            break;
        }
        gotoxy(snake[0][0],snake[0][1]);
        color(3);
        cout<<"★"<<endl;
        Sleep(abs(200-0.5*score));
        if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1
        {
            score++;
            len++;
            snake=(int**)realloc(snake,sizeof(int*)*len);
            snake[len-1]=(int*)malloc(sizeof(int)*2);
            apple[0]=rand()%(N-1)+1;
            apple[1]=rand()%(N-1)+1;
            gotoxy(apple[0],apple[1]);
            color(12);
            cout<<"●"<<endl;
            gotoxy(N+5,3);
            color(20);
            cout<<score<<endl;
        }
        if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
        {
            gotoxy(N/2,N/2);
            color(30);
            cout<<"失败!!!"<<endl;
            for(i=0; i<len; i++)
                free(snake[i]);
//Sleep(INFINITE);
            return 0;
        }
    }
    return 0;
}
2013-05-30 23:43
aaxxop
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2013-5-24
得分:0 
说有错误的同学多半是自己的编译器或者编译方法错了,其实就是把自己第一个"hello world"的空程序代码给覆盖掉再编译就欧克可以开始play了
2013-05-30 23:46
无与容比
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-6-1
得分:0 
不错
2013-06-01 20:39
rvan
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-6-2
得分:0 
回复 楼主 好聚好散
有一个错误,运行不了
2013-06-02 11:10
rvan
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-6-2
得分:0 
回复 14楼 aaxxop
怎么覆盖,求解
2013-06-02 11:11
rvan
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-6-2
得分:0 
D:\计算机语言软件\11.c(1) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
D:\计算机语言软件\11.c(2) : error C2449: found '{' at file scope (missing function header?)
D:\计算机语言软件\11.c(23) : error C2059: syntax error : '}'
执行 cl.exe 时出错.

11.exe - 1 error(s), 0 warning(s)
什么情况呢
2013-06-02 11:32
rvan
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-6-2
得分:0 
回复 11楼 我有我梦
你确定你是在win32控制应用平台下运行的不
2013-06-02 20:01
爱学习c语言
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-6-1
得分:0 
强 ,
2013-06-03 08:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-407865-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052075 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved