linux应用开发报告,Linux应用开发课程设计报告.docx

Linux应用开发课程设计报告

项目名称 贪吃蛇

学号:

姓名: 张浩

专业: 软件工程专业

班级: 14软工软设1班

指导教师: 郭俊颖

南 阳 理 工 学 院 软 件 学 院

2016年12月

一需求分析

问题描述

①蛇与食物出现的位置;

②蛇的游动;

③怎样实现蛇撞到自身会死;

④怎样判断蛇撞到墙;

2基本要求

实现蛇在不断吃到食物后分数增加,实现蛇的游动。

需实现的主要功能

①蛇与食物不能出现在一起;

②蛇撞到自身以及墙都会死;

③蛇吃到事物后,长度增加同时分数增加一

⑤随着分数的增加,关卡难度增加

设计实现方案

将蛇头的坐标以及蛇身的坐标都用二维数组表示出来,规定第一个下标为0则代表蛇头,为i则为蛇身,第二个下标为0代表横坐标,为1代表纵坐标,foodx代表食物横坐标,foody代表食物纵坐标,当蛇头坐标与事物坐标相等时则表示蛇吃到了事物,长度加一。方向变化为:当向上走时,横坐标不变,纵坐标减减;向下走时,横坐标不变,纵坐标加加;向左走时纵坐标不变,横坐标--;向右走时纵坐标不变,横坐标++。

2系统设计

分功能描述和设计流程图

当用户打开贪吃蛇时,进入主界面,主界面有开始及退出两个选项,当用户点击开始时,进入第二个界面(游戏界面),左侧为游戏界面,右上方显示分数与等级,当用户控制蛇吃到事物时分数会增加,当分数增加到5,15,20时,等级会提升。右下方为上下左右开始返回键,用户可以控制上下左右来操控蛇的游动方向,当用户点击开始时游戏则开始,当用户点击返回时,则退回到主界面。

。设计流程图如图2-1所示:

2-1 设计流程图

3系统实现

贪吃蛇的界面和代码

图3–1信息详情界面

贪吃蛇的核心代码:

void GameWidget::timeoutSlot()

{

//判断是否知道食物

if(snake[0][0]==foodx&&snake[0][1]==foody)

{

//吃到食物发出声音

sound->play();

//如果吃到食物,食物坐标更新

int i=0;

foodcount++;

score++;

str1=QString::number(score);

scoreshow->setText(str1);

QTime t;

t= QTime::currentTime();

qsrand(t.msec()+t.second()*1000);

foodx=qrand()%COL;

foody=qrand()%ROW;

while(i<=foodcount)

{

i++;

if(snake[i][0]==foodx&&snake[i][1]==foody)

{

foodx=qrand()%COL;

foody=qrand()%ROW;

i=0;

}

}

switch(score)

{

case 5:timer->setInterval(450);level++;break;

case 10:timer->setInterval(400);level++;break;

case 15:timer->setInterval(350);level++;break;

}

str2=QString::number(level);

levelshow->setText(str2);

}

memcpy(snake1,snake,sizeof(snake));

//实现蛇的游动

for(int i=foodcount;i>=1;i--)

{

snake[i][0]=snake[i-1][0];

snake[i][1]=snake[i-1][1];

}

switch(direction)

{

case UP:snake[0][1]--;break;

case DOWN:snake[0][1]++;break;

ca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值