自学C++写的一个简单贪吃小河游戏

娱乐而已,菜鸡一只,技术有限

  1 /************************************
  2     作 者:G.Z.Bing
  3     时 间:2018.2.16
  4     邮 箱:cn_gzb@126.com
  5     项目名称:
  6 *************************************/
  7
  8 #include<iostream>
  9 #include<windows.h>
 10 #include<ctime>                //  一些用于处理日期和时间的类型和函数
 11 #include<conio.h>            //定义键盘产生的对应操作
 12
 13 #define   H    20
 14 #define   W    20   //定义游戏界面高和宽
 15
 16 using namespace std;
 17 class game_interface
 18 {
 19 public:
 20     char qp[H][W];
 21     int i,j,x1,y1;
 22     game_interface();
 23     void food();
 24     void prt(int grade,int score,int gamespeed);
 25  };
 26 game_interface::game_interface()
 27 {
 28     for(i=1; i <= H-2; i ++)
 29         for(j=1; j <= W-2; j ++)
 30             qp[i][j] = ‘ ‘;
 31     for(i=0;i<=H-1;i++)
 32         qp[0][i] = qp[H-1][i] = ‘#‘;
 33     for(i=1;i<=H-2;i++)
 34         qp[i][0] = qp[i][W-1] = ‘#‘;
 35     food();
 36 }
 37 void game_interface::food()
 38 {
 39     srand(time(0));
 40     do
 41     {
 42         x1=rand()%W-2+1;
 43         y1=rand()%H-2+1;
 44     }
 45     while(qp[x1][y1]!=‘ ‘);
 46     qp[x1][y1]=‘$‘;
 47 }
 48 void game_interface::prt(int grade, int score, int gamespeed)
 49 {
 50     system("cls");
 51     cout << endl;
 52     for(i=0;i<H;i++)
 53     {
 54         cout << "\t";
 55         for(j=0; j<W; j++)
 56             cout<<qp[i][j]<<‘ ‘;
 57         if(i==0) cout << "\t等级:" << grade;
 58         if(i==2) cout << "\t吃掉个数:" << score/100;
 59         if(i==4)
 60           {
 61             cout <<"\t对老婆的评价:";
 62              if(grade == 1)
 63                  cout <<"老婆笨笨哒" ;
 64              else if(grade == 2)
 65                  cout <<"老婆66哒" ;
 66              else if(grade == 3)
 67                  cout <<"老婆你是最棒的" ;
 68              else if(grade == 4)
 69                  cout <<"老婆爱你哟" ;
 70              else
 71                  cout <<"我老婆最厉害了,娶你哟" ;
 72         }
 73
 74         if(i==6) cout << "\t时间间隔(速度):" << gamespeed << "ms";
 75         cout<<endl;
 76
 77     }
 78 }
 79 class snake : public game_interface
 80 {
 81 public:
 82     int zb[2][100];
 83     long start;
 84     int head, tail, grade, score, gamespeed, length, timeover, x, y;
 85     char direction;
 86     snake();
 87     void move();
 88  };
 89 snake::snake()
 90 {
 91     cout<<"\n\n\t\t游戏要开始了!"<<endl;
 92     for(i=3; i >= 0; i--)
 93     {
 94         start=clock();
 95         while(clock()-start<=1000);
 96         system("cls");
 97         if(i>0)
 98         cout << "\n\n\t\t倒计时:" << i << "秒"<< endl;
 99     }
100     for(i=1; i <= 3; i++)
101         qp[1][i]=‘*‘;
102     qp[1][4]=‘@‘;
103     for(i=0; i<4; i++)
104     {
105         zb[0][i] = 1;
106         zb[1][i] = i + 1;
107     }
108 }
109 void snake :: move()
110 {
111     score=0;
112     head = 3, tail = 0;
113     grade = 1, length = 4;
114     gamespeed = 500;
115     direction = 77;
116     while(1)
117     {
118         timeover = 1;
119         start = clock();
120         while((timeover=(clock() - start <= gamespeed))&&!kbhit());
121         if(timeover)
122         {
123             getch();
124             direction = getch();
125         }
126         switch(direction)
127         {
128         case 72: x= zb[0][head]-1; y= zb[1][head];break;
129         case 80: x= zb[0][head]+1; y= zb[1][head];break;
130         case 75: x= zb[0][head]; y= zb[1][head]-1;break;
131         case 77: x= zb[0][head]; y= zb[1][head]+1;break;
132         }
133         if(x==0 || x==H ||y==0 || y==W)                 //撞到边上
134         {
135             cout << "\t\t李雨潇是个大笨蛋,撞墙了!" << endl; break;
136         }
137         if(qp[x][y]!=‘ ‘&&!(x==x1&&y==y1))            // 蛇咬到自己
138         {
139             cout << "\t"<<"\t"<< "李雨潇是个大逗比,咬到自己!" << endl;break;
140         }
141         if(x==x1 && y==y1)
142         {
143             length ++;
144             score = score+100;
145             if(length>=8)
146             {
147                 length -= 8;
148                 grade ++;
149                 if(gamespeed >= 200)
150                     gamespeed = 550 - grade * 50;
151             }
152             qp[x][y]= ‘@‘;
153             qp[zb[0][head]][zb[1][head]] = ‘*‘;
154             head = (head+1)%100;
155             zb[0][head] = x;
156             zb[1][head] = y;
157             food();
158             prt(grade,score,gamespeed);
159         }
160         else
161         {
162             qp[zb[0][tail]][zb[1][tail]]=‘ ‘;
163             tail=(tail+1)%100;
164             qp[zb[0][head]][zb[1][head]]=‘*‘;
165             head=(head+1)%100;
166             zb[0][head]=x;
167             zb[1][head]=y;
168             qp[zb[0][head]][zb[1][head]]=‘@‘;
169             prt(grade,score,gamespeed);
170         }
171     }
172 }
173 int main()
174 {
175     game_interface cb;
176     snake s;
177     s.move();
178 }

代码在codeblocks运行:

原文地址:https://www.cnblogs.com/cn-gzb/p/10545696.html

时间: 2024-11-17 17:20:06

自学C++写的一个简单贪吃小河游戏的相关文章

虚幻4,BP写了一个简单的三线跑酷工程

BP写了一个简单的三线跑酷 链接: http://pan.baidu.com/s/1jILE4V8 密码: 96ua

java写的一个简单学生管理系统[改进]

用Java写的一个简单学生管理系统 import java.util.*; public class student_cj {  public static void main(String[] args){      Scanner in=new Scanner(System.in);   System.out.print("请输入学生人数:");   int num=in.nextInt();//学生人数   String[] str=new String[num];//结合一行数

写了一个简单的CGI Server

之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看,对于学生来说,拿来当简历,含金量还是足够的.如果把程序里所涉及的HTTP协议,Linux下POSIX编程等等搞清楚,我想找工作中肯定是有足够的竞争力的,当然我也只是皮毛而已,不再班门弄斧了,下面简单的说下程序流程吧,方便小伙伴们阅读. 程序源代码:戳我 在说程序流程之前,我先简单说下CGI吧,CG

用qt写的一个简单到不能在简单的上位机

学QT时,写的一个简单得不能再简单的串口上位机,用来控制单片机上的2个LED.假设一个是只有开和关的状态.一个可以调节亮度.上位机的界面如下图: 其中,波特率,数据位,停止位下拉值在设计师里面添加.剩下的功能,基本由代码实现.通信使用的协议也是随便写的.很简单和随意.图片是老弟手绘的. 下面贴代码 (*^__^*) #include "mainwindow.h" #include "ui_mainwindow.h" #include <QtSerialPort

写的一个简单定时器(非独立线程)

//Callback.h #ifndef __CALLBACK_H__ #define __CALLBACK_H__ typedef void (*T_CallBack)(void *); typedef struct { T_CallBack cb; void *obj; }ST_CallBack; int __NewTimer(void* obj, int interval, bool isloop, T_CallBack cb); void __DeleteTimer(int handle

写了一个简单可用的IOC

根据<架构探险从零开始写javaweb框架>内容写的一个简单的 IOC 学习记录    只说明了主要的类,从上到下执行的流程,需要分清主次,无法每个类都说明,只是把整个主线流程说清楚,避免陷入细节中.学习过程最大的收获,框架也是人写的,没学过感觉很神秘高端.现在看来大概率是,未知往往觉得是高不可攀.http://naotu.baidu.com/file/6c3da879a4495b6bd369f71dcb726f05?token=ed8c0d49d4ee7bbd 原文地址:https://ww

Cocos2d-X开发一个简单的小游戏

学了这么久Cocos2d-X,今天终于可以做出一个简单的小游戏了,游戏非常简单,通过菜单项控制精灵运动 在做游戏前,先学一个新概念 调度器(scheduler): Cocos2d-x调度器为游戏提供定时事件和定时调用服务.所有Node对象都知道如何调度和取消调度事件,使用调度器有几个好处: 每当Node不再可见或已从场景中移除时,调度器会停止. Cocos2d-x暂停时,调度器也会停止.当Cocos2d-x重新开始时,调度器也会自动继续启动. Cocos2d-x封装了一个供各种不同平台使用的调度

一个简单的猜拳游戏

本程序使用到了if else和switch语句: 1: import java.util.Scanner; 2: public class 猜拳 { 3: public static void main(String[] args) { 4: System.out.println(" ★★★★猜拳★★★★"); 5: System.out.print("请出拳(1.剪刀,2.石头,3.布):"); 6: Scanner in=new Scanner(System.i

Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布4.3版本的时候,就开始提供对制作2D游戏的支持了.例如,提供了一些专用于开发2D游戏的Unity工具.现在Unity已经发布了版本4.5,对2D游戏的支持更是完善了不少.为了说明Unity对2D游戏所提供的支持,本章会使用这些在Unity中原生的工具,开发一个简单的2D游戏.本文选自<Unity