贪吃蛇程序设计报告

贪吃蛇游戏程序设计

一、课程设计任务

    贪吃蛇小游戏程序设计

二、设计要求

通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。

1).收集资料,分析课题,分解问题,形成总体设计思路;

2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;

3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;

4).完成课程设计报告,并进行答辩

三、需求分析

3.1程序功能 

贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想

程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。

3.3、流程图

开始

初始化界面和蛇身

放置食物

蛇开始运动

蛇吃到食?

蛇长大

蛇死亡?

继续?

退出界面

N

 

N

Y

N

Y

 

游戏者按键选择

 

Y

四、设计的具体实现

1)函数定义 

函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用


#define N 200

#define M 200

#include"graphics.h"

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<iostream.h>

#include<dos.h>

#include<conio.h>

#include <windows.h>

#define LEFT 97//A

#define RIGHT 100//D

#define DOWN 115//S

#define UP 119//W

#define Esc 0x011b

int i,key;

int score=0;

int gamespeed=250;//游戏速度可根据实际情况自行调整

struct Food

{

    int x;//食物的横坐标

    int y;//食物的纵坐标

    int yes;//判断是否要出现食物的变量

}food;//食物的结构体

struct Snake

{

    int x[M];

    int y[M];

    int node;//蛇的节数

    int direction;//蛇的移动方向

    int life;//蛇的生命,0表示活着,1表示死亡

}snake;

void Init();//图形驱动

void Close();//图形结束

void DrawK();//开始画面

void GamePlay();//玩游戏的具体过程

void GameOver();//游戏结束

void PrScore();//输出成绩


2)主函数main( ) 

主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序

void main()//主函数

{

Init();//图形驱动

DrawK();//开始画面

GamePlay();//玩游戏的具体过程

Close();//图形结束

}

void Init()//图形驱动

{

int gd=DETECT,gm;

initgraph(&gd,&gm," ");/*此处为turboc的路径,读者可以根据自己的电脑而改*/

cleardevice();

}

3) 画界面函数DrawK( ) 

主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。

  • 21
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值