| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 436 人关注过本帖
标题:贪吃蛇的问题 有错误郁闷啊
只看楼主 加入收藏
Sliverwang
Rank: 2
等 级:论坛游民
帖 子:49
专家分:43
注 册:2011-4-1
结帖率:77.78%
收藏
 问题点数:0 回复次数:0 
贪吃蛇的问题 有错误郁闷啊
#define N 200
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN  0x5000
#define  UP 0x4800
#define  ESC 0x011b

#include"graphics.h"
#include"stdio.h"
#include"dos.h"
#include"stdlib.h"

int i;int key;
int GameSpeed = 200;
int score = 0;

struct food
{
        int x;
        int y;
        int yes;
}food;

struct Snake
{
        int x[N];
        int y[N];
        int node;
        int life;
        int direction;
}snake;
void Init(void);
void TuXJM(void);
void GMRUN(void);
void Score(void);
void GMOVER(void);
void Close(void);

void  main()
{
       void   Init(void);
       void   TUXJM(void);
       void   GMRUN(void);   
       void  Close(void);

}

void Init(void)
{
        int gd,gm;
        gd = DETECT;
        initgraph(&gd,&gm,"E:\tc");
        cleardevice();
}
 void TuXJM(void)
 {
        setbkcolor(15);
        setcolor(8);                  
        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,10);
         }
 }
void GMRUN(void)
{
        randomize();
        snake.life = 0;
        snake.x[0] = 100;  snake.y[0] = 100;
        snake.x[1] = 110;  snake.y[1] = 100;
        snake.node = 2;
        snake.direction = 1;

        food.yes = 1;
        Score();
        while(1)
        {
                while(!kbhit())
                {
                   if(food.yes ==1)
                      {
                        food.x = rand()%400+60;
                        food.y = rand()%350+60;
                  while(food.x%10!=0)
                        food.x++;
                  while(food.y%10!=0)
                        food.y++;
                    food.yes = 0;
                       }
                   if(food.yes ==0)
                   {
                        setcolor(2);
                        rectangle(food.x,food.y,food.x+10,food.y-10);

                   }
                  for(i = snake.node-1;i>0;i--)
                   {
                        snake.x[i] = snake.x[i-1];
                        snake.y[i] = snake.y[i-1];
                   }
                   switch(snake.direction)
                   {
                        case 1: snake.x[0] += 10; break;
                        case 2: snake.x[0] -= 10; break;
                        case 3: snake.y[0] += 10; break;
                        case 4: snake.y[0] -= 10; break;
                   }
                   for(i = 3;i<snake.node;i++)
                   {
                        if(snake.x[i] == snake.x[0]&&snake.y[i] ==snake.y[0])
                        {
                                GMOVER();
                                snake.life = 1;
                                break;
                        }
                   }
                   if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
                   {
                        GMOVER();
                        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.node] = -20;
                        snake.y[snake.node] = -20;
                        snake.node++;
                        food.yes = 1;
                        score +=10;
                        Score();
                   }
                   setcolor(1);
                   for(i = 0;i<snake.node;i++)
                   {
                        rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
                        delay(GameSpeed);
                        setcolor(0);
                        rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
                   }
                   if(snake.life == 1)
                   {
                        break;
                   }
                   key = bioskey(0);
                   if(key == ESC)
                   {
                        break;
                   }
                   else if(key == UP&& snake.direction !=4)
                   {
                        snake.direction = 3;
                   }
                   else if(key == DOWN && snake.direction !=3)
                   {
                         snake.direction = 4;
                   }
                   else if(key == RIGHT && snake.direction != 2)
                        {
                                snake.direction = 1;
                        }
                    else if(key == LEFT&& snake.direction != 1)
                    {
                                snake.direction =2;
                    }

                }   
 }
void GMOVER(void)
{
        cleardevice();
        Score();
        setcolor(2);
        settextstyle(0,0,6);
        outtextxy(200,200,"GAME OVER");
        getch();
}
                void Score(void)
                {
                      char str[10];
                      setfillstyle(SOLID_FILL,YELLOW);
                      bar(50,15,200,35);
                      setcolor(6);
                      settextstyle(0,0,4);
                      sprintf(str,"score:%d",score);
                      outtextxy(50,20,str);
                }
                void Close(void)
                {
                        getch();
                        closegraph();
                }
}
用的是turboc 编的 提示 在GMRUN有语义有问题 不知道哪里有问题 是逻辑错误了吗?
搜索更多相关主题的帖子: direction include 贪吃蛇 
2012-01-05 17:15
快速回复:贪吃蛇的问题 有错误郁闷啊
数据加载中...
 
   



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

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