面向对象程序设计贪吃蛇小游戏
一 实验开发背景及意义
1.1实验目的
面对对象课程设计课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对 C++语言的理解和掌握。提高和加强学生的计算机应用及软件开发能力,使学生具各初级程序员的基本素质,培养学生独立分析问题、解决问题,查阅资料以及目学能力,以适应信息管理行业目薪
月异的发展形势。
1.2实验主要软件
  利用Microsoft Visual C++2010学习版设计制作一个贪吃蛇小游戏
  C++图形库EasyX
1.3实验设计思想
  程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇头不可以向相反的方向移动,如果不按下意键,蛇自行在当前方向右前移,但按下有效方向键后,蛇头朝该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置一而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始面出蛇,这时,由于未清屏的原因,原来的蛇的位置和新的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后节用背景覆盖。食物的出现与消失也是画知形块和覆盖矩形块。
二 系统需求分析
2.1游戏规则
  开始游戏后,W A S D键控制贪吃蛇的移动方向,当贪吃蛇向一个方向移动时,不能立刻向反方向移动。贪吃蛇撞到的自己的身体或者撞到墙时,游戏结束,并输出“GAME OVER!”。贪吃蛇吃到一个食物后,出现白闪烁一次,身体随之增加一个单位长度。
2.2流程图
三 主要函数
3.1贪吃蛇
  snake.size = 3;
    snake.speed = 10;
    snake.dir=RIGHT;
    for(int i=0;i< snake.size;i++)
    {
        [i].x=30-i*10;
        [i].y=10;
    }
3.2食物
  food.x = rand() % 640;
    food.y = rand() % 480;
    lor = RGB(rand()%256,rand()%256,rand()%256);
    food.r = rand()%10+5;
    food.flag = true;
四 源代码
# include<stdio.h>
# include<graphics.h>
# include<conio.h>
# include<stdlib.h>
#define SNAKE_NUM 500
enum DIR //表示蛇的方向
{
    UP,
    DOWN,
    LEFT,
    RIGHT,
};
struct Food
{
    int x;
    int y;
    int r;
    bool flag;//定义食物是否被吃掉
    DWORD color;
}food;
struct Snake
{
    int size;
    int speed;
    int dir;
    POINT coor[SNAKE_NUM];
}snake;
void GameInit()
{
    //窗口
    initgraph(640,480);
    //设置随机数种子 
    srand(GetTickCount());//GetTickCount()获取系统开机 到现在所经过的毫秒数
    //蛇
    snake.size = 3;
    snake.speed = 10;
    snake.dir=RIGHT;
    for(int i=0;i< snake.size;i++)
    {
        [i].x=30-i*10;
        [i].y=10;
    }
    //食物
    food.x = rand() % 640;//防止超出窗口
    food.y = rand() % 480;
    lor = RGB(rand()%256,rand()%256,rand()%256);//颜初始化
贪吃蛇编程教学    food.r = rand()%10+5;
    food.flag = true;
}
void GameDraw()
{
    BeginBatchDraw();