773827986 发表于 2015-5-28 16:38

200行代码的贪吃蛇!

本帖最后由 773827986 于 2015-6-1 09:19 编辑

贪吃蛇小游戏界面效果{:301_1007:}
百度网盘(贪吃蛇.exe):http://pan.baidu.com/s/1jGFzAvG
百度网盘(Microsoft Visual C++ 6.0编译源码)http://pan.baidu.com/s/1o6onbMa

czr27 发表于 2015-5-28 19:52

我居然有空帮你调了调
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>   
#include <conio.h>
#include <windows.h>
int s1=0,s2=0;
int pp=10;
void caonima();

void PrintChar(char *ch,UINT count,UINT x,UINT y) //在坐标(x,y)处输出字符串ch,ch里有count个字符
{
HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
ULONG unuse;
pos.X=x;
pos.Y=y;
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
GetConsoleScreenBufferInfo(h, &bInfo );
WriteConsoleOutputCharacterA(h,ch,count,pos,&unuse);
}

int main()
{
      char p;
      srand((int)time(NULL));
      int a=0,b=19;
      int sjz;

      int sjz2;
      int t=0;
      int f=19;
                for(int i=0;i<22;i++){
                        PrintChar("-",1,i,21);
                        PrintChar("-",1,i,0);
                        PrintChar("-",1,0,i);
                        PrintChar("-",1,21,i);
                }
      sjz2=(rand()%(f-t+1))+t;
      sjz=(rand()%(b-a+1))+a;
                PrintChar("#",1,sjz+1,sjz2+1);
      //输出图纸
      while(true)
      {
                        PrintChar(" ",1,s1+1,s2+1);
                        switch(pp)
                        {
                                case 1:s1--;break;
                                case 2:s1++;break;
                                case 3:s2--;break;
                                case 4:s2++;break;
                        }   
                        caonima();
                        PrintChar("*",1,s1+1,s2+1);
            while(kbhit())
            {
                                PrintChar(" ",1,s1+1,s2+1);
                switch(getch())
                {
                                        case 'a':
                                                s1--;pp=1;caonima();break;
                                        case 'd':
                                                s1++;pp=2;caonima();break;
                  case 'w':
                        s2--;pp=3;caonima();break;
                  case 's':
                        s2++;pp=4;caonima();break;
                  default:
                        s2++;
                                                caonima();
                        break;
                }
                                PrintChar("*",1,s1+1,s2+1);
            }
                        //蛇吃到东西了
            if (s1==sjz&s2==sjz2)
            {
                                PrintChar(" ",1,sjz+1,sjz2+1);
                                sjz2=(rand()%(f-t+1))+t;
                                sjz=(rand()%(b-a+1))+a;
                                PrintChar("#",1,sjz+1,sjz2+1);
            }

                Sleep(100);
                //system("cls");
      }
      return 0;
}
void caonima(void)
{
        if(s1<0 || s1>20 || s2<0 || s2>20)
        {
                system("cls");   
                std::cout << "sile";
                pp=10;
                getch();
        }
}

773827986 发表于 2015-5-29 14:26

lytalyt 发表于 2015-5-29 12:53
楼主如果需要代码我可以把项目发给你。。不过挺复杂的。楼主你可以去网上搜mfc贪吃蛇视频教程,一步步教的 ...

{:301_991:}我没按照网上贪吃蛇的做法做,因为我完全看不懂,我已经做出来了{:301_984:}

嘉靖 发表于 2015-5-28 16:51

太高深了,坐等大神出现,

358463121 发表于 2015-5-28 16:59

你只要1秒钟闪24下就不闪了

wsat 发表于 2015-5-28 17:07

这个需要绘图

lytalyt 发表于 2015-5-28 17:07

我用MFC写过

773827986 发表于 2015-5-28 19:02

ubuntu 发表于 2015-5-28 17:33
代码居然只有不到100行么?

只是个雏形,但是他不停的闪,我就不高兴做下去了!所以想请教一下{:301_999:}

浙江螃蟹 发表于 2015-5-28 19:52

我试过了,这蛇他吃了东西后老是不长大呀,

773827986 发表于 2015-5-28 21:05

浙江螃蟹 发表于 2015-5-28 19:52
我试过了,这蛇他吃了东西后老是不长大呀,

{:301_1009:}说了只是雏形

czr27 发表于 2015-5-28 21:15

浙江螃蟹 发表于 2015-5-28 19:52
我试过了,这蛇他吃了东西后老是不长大呀,

他至少加上数据结构才能实现
页: [1] 2
查看完整版本: 200行代码的贪吃蛇!