C++实习

C++暑假实习的前三天的任务就是用C语言做一个贪吃蛇的小游戏,然后开始跟着老师一起做核心功能板块,最后由我们自己去改善和美化我们的程序。下面就介绍一下这个简单的贪吃蛇游戏的实现过程。


虽然是个小程序,但是其代码也有一定长度,并且其逻辑性很强,要实现程序的逻辑,必须要模块化地进行编写。以下叙述一下鄙人的思想

1、如何产生一条蛇?

首先用一个符号来作为我们的蛇身,并确定我们蛇的起始位置,规定我们蛇的起始长度,即可,蛇的身体可以用一个数组来存储,而蛇的初始位置可由我们的系统函数确定:

HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(hOut,temp);

2、蛇如何进行运动?

蛇的移动即是我们数组的移动,而根据蛇的运动规律,点的移动新坐标即是前面一个点的旧坐标,因此,点的移动很简单。

3、运动的方向我们如何去控制?

方向的控制和我们蛇的移动息息相关,我们通过得到键盘的输入来控制相应的蛇的移动方向,这里用到了一个按键响应函数:

kbhit();

4、运动的范围该如何设置?

所谓运动的范围,不过是我们给蛇画的一个牢笼,任意在屏幕上用光标设置函数即可确定,就像打印蛇身一样来打印我们的地图。

5、蛇要吃的食物如何产生?

蛇的食物肯定是由随机数产生,然后我们要控制这个随机数在我们画的地图里面产生。

6、蛇如何吃食物?以及设置吃食物后的效果?

吃食物,即是蛇头和食物的坐标一致,然后食物的位置由蛇身代替,我们将蛇走过的轨迹置空,即可屏蔽蛇身的路径。然后当蛇头与食物相遇,我们即可将蛇的长度加1或其他效果

7、蛇要死亡,怎么个死法?

蛇的死法千种万种,可以吃毒食物而死,可以撞到我们的地图框而死,也可以吃到自己而死………………………….

如果能把上面的思路理清,那么写一个贪吃蛇的小游戏也就不难了,下面是我的具体实现代码:

// myproject.cpp : Defines the entry point for the console application.
//


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h >
#include <time.h>

#define InitLEN   10  //蛇初始长度
#define MAXLEN 100  //蛇最大长度

#define HIGH 20   //地图高
#define WIDTH  40  //地图宽

int SnakeLEN=0;   //蛇的长度
int score=0;       //得分
int barrier_num =0;  //所有障碍物组成点的个数

int half;       
//#define HPRIZON       1
//#define VERTICAL  2

COORD arr[MAXLEN];
COORD tmp_arr[50];

COORD food_pos;
COORD map_pos;
COORD tmp_wall;
COORD tmp_barrier;

#define RIGHT 39
#define LEFT  37
#define UP    38
#define DOWN  40



HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);  //坐标

void clearSnake();  
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值