无法运行的贪吃蛇游戏代码,求大神帮忙修改!

原创 2014年11月04日 08:00:07
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>                                 //使用当前时间做种子
enum dir {up,down,left,right};                    //枚举类型enum dir //围墙
class Fence
{
public:
    void initFence();
    void OutputF();
public:
    char game[20][20];
} f;                                               //定义对象  //画框框
void Fence::lnitFence()
{
    for (int i=0; i<20; i++)
        for (int j=0; j<20; j++)
        {
            if (i==0||i==19||j==0||j==19)
                game[i][j]='*';
            else
                game[i][j]=' ';
        }
}                                                   //显示框框
void Fence::OutputF()
{
    for (int i=0; i<20; i++)
    {
        for (int j=0; j<20; j++)
            cout<<game[i][j]<<'';
        cout<<endl;
    }
}                                                    //蛇结点
class SnakeNode
{
private:
    int x,y;
    SnakeNode *prior,*next;
public:
    void add_head(int x,int y)
    int get_x();
    int get_y();
    void delete_tail();
}
*head=NULL,*tail=NULL;                                 //插入头结点
void SnakeNode::add_head(int x,int y)
{
    SnakeNode *q=new SnakeNode;
    q->x=x;
    q->y=y;
    q->next=head;
    q->prior=NULL;
    if (head)
        head->prior=q;
    head=q;
    if (!tail)
        tail=head;
    f.game[x][y]='*';                                   //f对象可以在定义Fence类时定义;且Fnce类在SnakeNode类前定义
}
int SnkeNode::get_x()
{
    return x;
}
int SnakeNode::get_y()
{
    return y;
}                                                        //删除尾结点
void SnakeNode::delete_tail()
{
    SnakeNode *p=tail;
    f.game[tail->get_x()][tail->get_y()]=' ';            //把尾结点的坐标表示的'*'置为空格;
    if (tail==head)
        tail=head=NULL;
    else
    {
        tail=tail->prior;
        tail=next=NULL;
    }
    delete p;
}
class move
{
public:
    dir point;                                            //枚举变量point:控制方向
    int food_x;
    int food_y;
public:
    void moving();
    void change_point(char);                               //改变方向;
    void get_food();
};
void move::moving()
{
    int a,b;
    a=head->get_x();                                        //取得头结点横坐标
    b=head->get_y();                                        //取得头结点纵坐标
    switch (point)
    {
    case up:
        --a;
        break;
    case down:
        ++a;
        break;
    case left:
        --b;
        break;
    case right:
        ++b;
        break;
    }
    if (a==19||b==19||a==0||b==0||game[a][b]='*')             //判断是否撞墙
    {
        cout<<"gameover!!!"<<endl;
        exit(0);
    }
    if (a==food_x&&b==food_y)                                 //吃food
    {
        head->add_head(a,b);
        get_food;
    }
    else
    {
        head->add_head(a,b);                                   //插入头结点
        head->delete_tail();                                   //删除尾结点
    }
    void move::change_point(char keydown)
    {
        switch (keydown)
        {
        case 'w':
            point=up;
            break;
        case 's':
            point=down;
            break;
        case 'a':
            point=left;
            break;
        case 'd':
            point=right;
            break;
        }
    }
    void move::get_food()
    {
        srand((unsigned int) time(NULL));                       //做种子(程序运行时间)
        food_x=rand()%18+1;
        food-y=rand()%18+1;
        f.game[food_x][food_y]='*';
    }
}
int main()
{
    cout<<"Using 'w,a,s,d'to control direction!!!\n\n\n";     //画框框和小蛇;
    move m;
    f.lnitFence();
    head->add_head(4,3);
    head->add_head(4,4);
    head->add_head(4,5);
    m.get_food();
    f.OutputF();
    while (ture)
    {
        char keydown =getch();                                  //getch()返回
        m.chan
        ge_point(keydown);
        while (!kbhit())                                        //判断有没有按键落下
        {
            system("cls");                                       //清屏函数;
            m.moving();
            f.OutputF();
            sleep(200);
        }
    }
    return 0;
}

 

 错误显示:



  


这是我在网上看到的,照着原图花了半个多小时敲出来的代码,可问题还是一大堆;网上的东西果然不可信啊   这里面好像大部分都是C语言,求有空的大神帮我修改成C++,找出错误并改正,谢谢啦;新手上路,请多多关照。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

VC版的贪吃蛇游戏

学C++的时候,课程设计编写了C++版的贪吃蛇游戏,当时,将很多的东西都分装在了Snake类中,所以,将其移植到VC中,只需将Snake类稍作修改,然后添加到VC中即可。     此处,我感受到复用性...
  • u012027907
  • u012027907
  • 2013年10月02日 01:30
  • 4293

纯C语言实现贪吃蛇游戏(VC6.0)

转自C语言网 今天笔者为大家展示C语言写的贪吃蛇游戏,让大家玩一玩自己写的游戏~ 是纯C语言哦~VC6.0开发 无问题   首先,开始界面: 游戏界面如下: ...
  • gin1008
  • gin1008
  • 2016年10月10日 19:51
  • 30470

经典游戏---贪吃蛇从C++代码实现

小时候都玩过贪吃蛇这个经典的小游戏,在我们的普通手机里似乎都是必备的。它伴随着我们的童年,经历了好多好多时光。它带给我们了许多的乐趣。 学习了c++这门编程语言后,我就想着能不能把它做出来,在我查看了...
  • u014552726
  • u014552726
  • 2014年05月31日 00:09
  • 53924

H5网页版贪吃蛇源代码

H5网页版贪吃蛇源代码,新建文本文档,将下面的代码复制粘贴到文本文档,然后保存文件。重命名文件及后缀名为index.html。将文章最下面的两个图片保存下来,蓝色背景大图重命名为back.jpg,骷髅...
  • liuhannan111
  • liuhannan111
  • 2017年06月15日 16:25
  • 2154

{求大神帮忙!!!!!!}

原题描述: 给定一个日期,输出这个日期是该年的第几天。 Input 输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入...
  • u012246348
  • u012246348
  • 2013年10月23日 15:43
  • 622

求大神帮忙啊!!!!!!!!!!!!!!!!!!!

启动tomcat的时候总是报错; [ERROR] 2015-12-30 14:45:05 :Context initialization failed  java.lang.IllegalArgu...
  • li1402133184
  • li1402133184
  • 2015年12月30日 14:59
  • 388

js开发实现简单贪吃蛇游戏(20行代码)

曾经诺基亚的贪吃蛇风靡一时,在游戏匮乏的年代,用java实现太难,现在网页制作20行代码就做成一个简单的demo了,时代在进步啊 代码: 01 02 html>...
  • hj7jay
  • hj7jay
  • 2016年03月30日 09:45
  • 46002

贪吃蛇游戏,基于C语言,vs2010平台

贪吃蛇游戏,基于C语言,vs2010平台
  • njut_water
  • njut_water
  • 2017年02月26日 20:20
  • 1093

贪吃蛇游戏(C语言)(在Dev c++、vc中运行通过)

贪吃蛇游戏(C语言)在大一计算机实训时写的,其中较难理解的应该是句柄,需要自己网上查找资料 以下是代码片段:#include #include #include #include #define f...
  • sinat_36570284
  • sinat_36570284
  • 2016年12月26日 22:40
  • 4309

简单贪吃蛇游戏的C++实现

我大概在一个多月前把自己上学期写的c代码的贪吃蛇游戏push到csdn上,并且说c风格的贪吃蛇写起来有些麻烦(贪吃蛇游戏的c语言实现),准备用面向对象的c++再写一遍。现在我们专业恰好刚教完了c++,...
  • luojj26
  • luojj26
  • 2016年04月13日 08:36
  • 2668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:无法运行的贪吃蛇游戏代码,求大神帮忙修改!
举报原因:
原因补充:

(最多只允许输入30个字)