回 帖 发 新 帖 刷新版面

主题:一段运行不了贪吃蛇C代码

这段程序的图形界面能运行,只是蛇怎么也出不来,中间有显示器驱动函数。小生做了一晚上了,怎么也弄不明白,麻烦哪位高手能不厌其烦的把小生改写下,由于比较简单,就没加注解了。如果运行不成功,功劳就白费了具体代码如下:
#include <stdio.h>
#include <graphics.h>
#include <time.h>         //所需头文件
#include <dos.h>
#include <bios.h>
#define MAX_JOINTS 200   //最大节数
#define LEFT 0x4b00
#define RIGHT 0x4d00    //各键值
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define MV_RIGHT 1
#define MV_LEFT  2      
#define MV_UP    3
#define MV_DOWN  4
void InitGraph(void);
void DrawFence(void);  
void GamePlay(void);
void GameOver(int score);
void PrScore(int score);
struct Food        
{
    int x;         
    int y;         
    int addFood;   
};
struct Snake
{
    int x[MAX_JOINTS];
    int y[MAX_JOINTS];
    int joint;
    int direction;
    int life;
};
void main(void)
{
    InitGraph();
    DrawFence();
    GamePlay();
    closegraph();
}
void InitGraph(void)
{
    int gd=DETECT,gm;
    initgraph(&gd,&gm,"");
    setbkcolor(BLUE);
    setcolor(WHITE);
    settextstyle(DEFAULT_FONT,HORIZ_DIR,3);
    outtextxy(170,150,"Greedy Snake");
    outtextxy(249,254,"Ready?");
    setcolor(BLUE);
}
void DrawFence(void)
{
    int i;
    setbkcolor(LIGHTGREEN);
    setcolor(11);
    setlinestyle(SOLID_LINE,0,THICK_WIDTH);
    for(i=50;i<=600;i+=10)
    {
       rectangle(i,40,i+10,49);
       rectangle(i,451,i+10,460);
    }
    for(i=40;i<=450;i+=10)
    {
       rectangle(50,i,59,i+10);
       rectangle(601,i,610,i+10);
    }
}
void GamePlay(void)
{
    int i,key;
    int gamespeed=22000;
    int score=0;
    struct Food food;
    struct Snake snake;
    food.addFood=1;
    snake.life=0;
    snake.direction=MV_RIGHT;
    snake.x[0]=100;snake.y[0]=100;
    snake.x[1]=110;snake.y[1]=100;
    snake.joint=2;
    PrScore(score);
    srand(time(NULL));
    while(1)
    {
        while(!kbhit())
        {
           if(food.addFood==1)
           {
                 food.x=rand()%400+60;
                 food.y=rand()%350+60;
                 while(food.x%10!=0)
                 {
                       food.x++;
                 }
                 while(food.y%10!=10)
                 {
                       food.y++;
                 }
                 food.addFood=0;
           }
           if(food.addFood==0)
           {
                setcolor(GREEN);
                rectangle(food.x,food.y,food.x+10,food.y-10);
           }
           for(i=snake.joint-1;i>0;i--)
           {
                 snake.x[i]=snake.x[i-1];
                 snake.y[i]=snake.y[i-i];
           }
           switch(snake.direction)
           {
                 case MV_RIGHT:snake.x[0]+=10; break;
                 case MV_LEFT:snake.x[0]-=10;  break;
                 case MV_UP:snake.y[0]-=10;    break;
                 case MV_DOWN:snake.y[0]+=10;  break;
           }
           for(i=3;i<snake.joint;i++)
           {
                 if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
                 {
                       GameOver(score);
                       snake.life=1;
                       break;
                 }
           }
           if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
           {
                  GameOver(score);
                  snake.life=1;
           }
           if(snake.life==1)  break;
           if(snake.x[0]==food.x&&snake.y[0]==food.y)
           {
              setcolor(0);
              rectangle(food.x,food.y,food.x+10,food.y-10);
              snake.x[snake.joint]=-20;snake.y[snake.joint]=-20;
              snake.joint++;
              food.addFood=1;
              score+=10;
              PrScore(score);
           }
           setcolor(4);
           for(i=0;i<snake.joint;i++)
           {
                 rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
           }
           delay(gamespeed);
           setcolor(0);
           rectangle(snake.x[snake.joint-1],snake.y[snake.joint-1],
                     snake.x[snake.joint-1]+10,snake.y[snake.joint-1]-10);
        }
           if(snake.life==1) break;
           key=bioskey(0);
           if(key==ESC) break;
           else if(key==UP&&snake.direction!=4)
              snake.direction=MV_UP;
           else if(key==RIGHT&&snake.direction!=MV_LEFT)
              snake.direction=MV_RIGHT;
           else if(key==LEFT&&snake.direction!=MV_RIGHT)
              snake.direction=MV_LEFT;
           else if(key==DOWN&&snake.direction!=MV_UP)
              snake.direction=MV_DOWN;
    }
}
void GameOver(int score)
{
    cleardevice();
    PrScore(score);
    setcolor(RED);
    settextstyle(0,0,4);
    outtextxy(200,200,"Game over!");
    getch();
}
void PrScore(int score)
{
    char str[10];
    setfillstyle(SOLID_FILL,YELLOW);
    bar(50,15,220,35);
    setcolor(6);
    settextstyle(0,0,2);
    sprintf(str,"score:%d",score);
    outtextxy(55,20,str);
}

回复列表 (共5个回复)

沙发

我的游戏人生

从小就玩游戏,小时候玩街机和小霸王,初中时我记得玩PS和掌上GBA来着,在往后就出现了电脑这个东西,以后基本游戏都在电脑上玩的了。以前玩网络游戏的时候就寻思自己也弄个游戏多好,上大学时也就一直有这么个想法,但是想想现在那些大型网络游戏好像魔兽世界的这种根本就不可能的吧,最后想了想游戏游戏,咱从小不是就玩棋牌这些游戏了吗,而且还大众化玩的人也多。

玩棋牌游戏应该从小就接触了,什么象棋、围棋、扑克牌、军旗小时候经常玩,还有一些地方性的老年玩法不是很清楚。棋牌游戏里边我比较喜欢玩诈金花,这也根据地域性质有些差别吧,南方早期比较喜欢斗地主,北方喜欢升级、够级等很多应该有,还有四川重庆或成都比较喜欢麻将这些。我到处问了问运营个棋牌游戏也就几万块钱,所以自己也就弄了一个。

我现在自己运营了个地方性棋牌游戏,整的还不错,反正我感觉比打工的赚钱要多的多,我就弄了自己几个熟悉的家乡经常玩的棋牌游戏,买了一个游戏平台。说到游戏平台,还真是一路坎坷的,其实游戏平台这玩意挺讲究,一定要小心一些骗子公司开始我买了深圳泊众棋牌,这个烂公司卖给你软件拿到钱后直接不管你了,我当时让这个公司给害死了!

后来我在百度搜索又找了山东日照的一家叫国软软件的游戏开发公司,我记得网址好像是 www.guoruan.com来着,这次有经验了先签合同弄着,这家国软软件我感觉挺好的,交我怎么架设服务器,要注意什么,应该小心什么等全方位的告诉了我,可能也是山东人做生意实在不糊弄人吧,最后也算是我幸运。现在游戏平台运营挺稳定,弄了个小网络公司顾几个人维护着就行,我又天天闲着了,最近弄点钱还炒个小股赚赔的玩玩,反正也是完成游戏梦了吧。

我的QQ:860312460和690583672,如果有这方面的朋友咱可以一起交流交流,你想运营棋牌游戏咱就探讨一下这方面的经验来沟通一下。也可以来[url=http://www.qipaishequ.com/]棋牌社区[/url] 找我。

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
2010年,中国网民突破了4亿,
网络游戏玩家超过了3亿,
互联网即将进入全民网游的时代

3 楼

新时代元亨 新时代天意系统元亨QQ 919169870 新时代直销元亨QQ 919169870 新时代天意 

 新时代天意系统更多资料
 http://blog.sina.com.cn/xsd9



   《天意系统》是某个公司系统;是所有合法直销公司的系统!是天下系统的集大成者!他不仅有自己的‘教育’体系,及排点布局方法;还给每个会员赠送了独立的会员平台,空中市场开发工具…… 重要的是:“她破译了直销的奖金制度!!!揭开了新一轮伟大的经济革命;从此,倾国倾城的‘类直销’踏着她那轻盈而曼妙的脚步来到您的身边……工具的革命带来新一轮的财富分配,针对某个行业的跨越性突破革新同样带来行业性新一轮的财富分配,天意破译了直销的奖金制度,其意义犹在前二者之上……” 

 


      网络倍增的“奥秘”已是人人皆知,但,“找人”难已是无法逾越的“鸿沟”!, 每一个直销人都梦想着拥有自己的活跃团队和庞大消费群体,从而实现超凡的财富管道。然而,十几年的直销历程能梦想成真的又有几人?直销难民中不乏很多优秀的有志之士,我们也都努力过,奋斗过,拼搏过。但风雨过后彩虹却始终没有出现!

 其实在直销这个行业里:公司和产品只不过是一种“道具”,而团队和系统才是最终和关键!有了庞大而活跃的团队,自然就有业绩,有了业绩在任何公司其实都能赚到钱。今天的“天意系统”就是专门帮你快速组建团队的成功系统,假如您能放下固有的观念,静下心来认真读懂天意系统的运作机理,相信您会“惊喜不已”。

   “天意系统”即不是公司,不是产品,也不是团队。它只是网络界一种超级独特的“运作模式”。它用最有效的方法帮你迅速组建起庞大的团队,确保成功达到利润最大化。而传统的直销是各自为战、孤立无援:报单后、买产品、用出感觉、马上分享,还要学习很多产品知识,产品示范,课程激励,然后你就要自己疯狂的去“找人”,可我们往往是推荐了一批,一批人进来了,另一批人睡着了,推动了一批,又倒下了一堆,最后人际关系枯竭,事业无法向前发展了。这时多数人只好宣告失败了.所以,如何能组建一支有活力的团队才是这个事业的重中之重!才有可能真正实现自己心中的希望和梦想。

 

                                 天意系统破译直销方案

 

天意系统的核心点:1、全球一条线原则,2、零存整取原则。

1、全球一条线原则:

凡是通过“天意系统”注册的会员,不论是谁推荐的,也不管你推荐了多少,一律打乱推荐关系,按照报单时间先后顺序一条线深度排网,如:你今天通过天意系统注册成为新时代公司的会员.在全球凡是比你晚注册的会员都有可能排在你的后面,这样你在新时代公司会员后台的网络里面就会有一条自律式发展的团队了,而且会无限延伸。当然,一条线即使再大在直销公司里也是不赚钱的,那么如何能有更多条线呢?请看:

 

1,当你在21天内直接推荐2人,或三个月内直接推荐4人,你就成为本系统“一星会员”;这时你的小区新增人数达到5人时,系统开始为你开:第2条全球线!


2,当你再一次在21天内推荐2个人,或三个月内直接推荐4人,你就成为本系统的“二星会员”;这时你的小区新增人数达到81人时,系统为你开:第3条全线!


3,其他4---10条线依此类推,系统最多可帮你开10条线。


4,但报单一个月内,你没有推荐一个朋友,你的天意系统点位就作废了,但新进代公司点位仍然有效,可以做传统新时代直销。

    就是说你只需要推荐2个愿意在新时代公司办卡成为会员的朋友,系统就会自动帮您打造您的第二条线,这就是帮你快速组建团队的“天意系统”,今后你所有的团队都是天意系统在帮你打造,都是按全球一条线排网,所以,当你得到这个信息后:每当误一分钟都不知道会有多少人先你而至了。好像有点“匪夷所思”,但我刚做了4天,介绍两个朋友,系统就已经开始为我打造第二条线了。就这么简单。

 

二,零存整取原则:全球一条线,打乱了推荐关系;零存整取原则,严格遵守推荐关系;用双轨图来统计我们为“全球一条线原则”做出多少贡献,用来作为回馈你的付出依据。

    对于第二个原则可能会有些抽象,需要你静下心来认真完整的看完整个资料看一看我们即将运作的“新时代”的奖金制度视频,假如您看完后还是不很理解,欢迎您与我语音交流。


新时代元亨 新时代 天意系统元亨QQ 919169870 新时代直销元亨QQ 919169870 新时代天意  代新时官网

4 楼


http://img382.ph.126.net/c3WgTRbKaQKW1A-Hym3XVQ==/1061442137177061597.jpg
[img]http://img382.ph.126.net/c3WgTRbKaQKW1A-Hym3XVQ==/1061442137177061597.jpg[/img]

5 楼

在什么编译器上运行?

我来回复

您尚未登录,请登录后再回复。点此登录或注册