别踩百块儿游戏程序设计.docx
《别踩百块儿游戏程序设计.docx》由会员分享,可在线阅读,更多相关《别踩百块儿游戏程序设计.docx(21页珍藏版)》请在冰豆网上搜索。
别踩百块儿游戏程序设计
计
算
机
游
戏
程
序
设
计
计算机科学院
数字媒体技术
游戏名称:
别猜白块
开发工具:
eclipse
游戏平台:
夜神安卓模拟器
模拟器规格:
主频:
1.5GHz
内存:
1GB
操作系统:
安卓
开发语言:
java
游戏简介:
别踩白块儿,这就是这个游戏唯一的一个规则。
游戏简单易上手,并且有多重玩法,画面分为4行4列,每一行都只有一个黑色色块,你的任务就是按对他——游戏共三个模式,经典、街机、禅。
经典模式中玩家的目标是在最短的时间内按完50个黑方块,每按对一个画面会自动下降。
游戏特性
本游戏设计灵感来自于钢琴,但是之前也有类似的钢琴游戏比如《极品钢琴》
但是极品钢琴键位较多,难度较大,不适合业余玩家使用。
所以别踩百块就简化了操作,只保留了四个键位,可玩性得到了增强,而趣性也得到了保留
简单易玩,老少咸宜,可谓居家旅行+上班打发无聊得利器噢
5x3种好玩的模式
美妙的钢琴音效
顺畅的游戏体验
支持GameCenter排行榜(鄙视作弊的)
支持社交网络分享,可以随时炫耀自己得成绩
警告,这个游戏很容易上瘾,自制力不好的人慎玩!
游戏背景
自从越南的的独立游戏开发者——DongNguyen花了几个晚上为游戏界打了一针鸡血后,《疯狂的小鸟》(FlappyBird)带来的极简游戏风暴就一直没停歇过,事实上这股风暴根本停不下来。
紧随其后,《2048》再一次掀起了极简游戏风暴。
而《别踩百块》正是继承了这一极简风格。
极简游戏之所以如此风靡,其关键点就在于其操作的简单性。
操作的简单性导致了这个游戏对于任何人而言都很容易上手,不管是在校大学生、白领、甚至是老人小孩都很热衷于玩这款游戏。
由于极易上手,操作简便,模式简单,不管是对于开发者还是使用者都是意见好事儿。
对于开发者,简单的游戏更容易开发,也很容易受到欢迎甚至是风靡,对于使用者,人们可以利用碎片化的时间,无论是在地铁、公交课间休息,只要一个手机就可以玩了。
玩法评分★★★★★
《别踩白块儿》是一款非常考验反应速度的游戏,画面分为4行4列(某些模式除外),每一行都只有一个黑色色块,你的任务就是按对他——游戏共115个模式,其中耐玩性最高的就是经典、街机、限时模式了。
经典模式中玩家的目标是在最短的时间内按完20、50、100或200个黑方块,每按对一个画面会自动下降。
街机模式则没有时间限制,但画面会一刻不停的下落,而且速度越来越快,你要在这样的限制下,尽可能多的按对色块,漏掉或者按错游戏都会结束。
限时模式则是给玩家10、30、60或100秒钟,比拼谁能准确按完的色块最多。
画面评分★★★☆☆
本游戏的画面还算可以。
多彩的画面简洁而不繁琐。
新版的画面相比以前的可谓好了十万八千里,同时也增加了许多的元素。
音效评分★★☆☆☆
音效嘛,呵呵,也和画面一样精简。
整个游戏中除了按到方块时有一点声音外,没有任何音效音乐了。
操作评分★★★★★
作为考验反应力的游戏,《别踩白块儿》的操作响应是很完美,例如在高速的街机模式中,这种流畅感尤其能得到体现。
整体评分★★★★☆
代入感是本游戏的一大缺失。
《FlappyBird》有熟悉的马里奥背景坐镇,《2048朝代版》有上下五千年护航,如果《别踩白块儿》能加点网络流行的神兽图,或者暴走漫画表情等,一定还可以让人气更上一层。
游戏框架
启动流程:
一、打开eclipse
二、编写代码:
三、试运行
运行结束
操作指南
1、视线落在屏幕的中上方,为了预防不测。
你在按这个的同时眼睛已经看下一个了。
2、街机模式一旦开启,玩家必须注意黑白块儿下滑的速度。
初始是不快的,但是一旦玩家可以不断点击黑块,就会逐渐加速下滑的速度(增加不多,但是的确有)所以,建议大家,没有必要太过追求速度点击黑块,只要保证跟上初始下滑的速度即可。
3、把色块大致分成三种,第一种是单块,第二种是双,三,四块,第三种是场块,按的时候这三种在脑子里分别的用不同方法进行判定。
这样就不至于按到六七百的时候乱了。
4、放平心态。
早前一款超虐心游戏不知道牺牲掉了多少台手机,挂了摔手机的冲动也不是人人可以克制住。
所以,在玩这款游戏之前,还是建议大家放平了心态。
不要想着要刷多少分,休闲时,拿出手机来试一下手感,往往可以起到奇效。
5、眼睛一定不要盯着屏幕上的黑块,不然你会感觉手忙脚乱,把视野放到全局,虽然视线模糊了,但是不要慌,跟着感觉打就对了。
6、多手操作。
这个没有要讲的,如果玩大屏设备(例如iPad)的玩家肯定早都上两只手了,据说可以单手刷满500以上的,都是撸神。
双手操作,更容易跟上速度,不过需要注意协调性,往往会出现上下顺序点错的问题。
7、从下往上,分工进行。
意思就是,玩家在看下滑的方块时,因为黑色更加醒目,大部分的玩家在前面几乎不会出现失误。
往往到后面,长时间的眼睛色差疲劳,加上手指灵活性降低,一念之差就有可能功亏一篑。
所以,玩家可以试着,降慢速度,从下方跟着下滑到最底的黑块进行点击,左右手分工左右方,可以保证双手平摊工作,不会造成手部疲劳。
部分功能源码:
BaseProperty.java
packagecom.example.bcbk;
importandroid.graphics.Canvas;
importandroid.graphics.Paint;
importandroid.graphics.Rect;
importandroid.view.MotionEvent;
publicabstractclassBaseProperty{
publicPaintpaint;
intscreen_width=MainActivity.screen_width;
intscreen_height=MainActivity.screen_height;
publicabstractvoidonTouch(MotionEventevent);
}
gameMenu.java
packagecom.example.bcbk;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.Rect;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.widget.Toast;
//游戏菜单页面
publicclassGameMenuextendsBaseProperty{
RecttargetRect;
Stringstr="Play";
floatx_left;
floatx_right;
floaty_top;
floaty_botton;
changeStatechange;
publicGameMenu(){
paint=newPaint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setTextSize(70);
targetRect=newRect();
//返回包围整个字符串的最小的一个Rect区域
paint.getTextBounds(str,0,str.length(),targetRect);
}
publicvoidsetChange(changeStatechange){
this.change=change;
}
publicvoidondraw(Canvascanvas){
canvas.drawRGB(0,0,0);
inttextheight=targetRect.height();
inttextwidth=targetRect.width();
x_left=(screen_width-textwidth)/2;
x_right=(screen_width+textwidth)/2;
y_top=(screen_height-textheight)/2-textheight;
y_botton=(screen_height-textheight)/2;
canvas.drawText(str,x_left,(screen_height-textheight)/2,paint);
}
@Override
publicvoidonTouch(MotionEventevent){
floatx=event.getX();
floaty=event.getY();
switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
if(isStart(x,y)){
if(change!
=null){
change.execute(GameState.STATE_PLAY_INIT);
}
}
break;
default:
break;
}
}
publicbooleanisStart(floatx,floaty){
if(x>x_left&&xif(y>y_top&&yreturntrue;
}
}
returnfalse;
}
publicinterfacechangeState{
publicvoidexecute(intstate);
}
}
GameOver.java
packagecom.example.bcbk;
importandroid.graphics.Canvas;
importandroid.util.Log;
importandroid.view.MotionEvent;
importcom.example.bcbk.GameMenu.changeState;
publicclassGameOverextendsBaseProperty{
privatechangeStatechange;
privateDrawTexttext_score;//分数
privateDrawTexttext_Mkuai;//每秒块数
privateDrawTexttext_again;//重来
privateDrawTexttext_over;//结束
@Override
publicvoidonTouch(MotionEventevent){
//TODOAuto-generatedmethodstub
switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
if(text_again.onTouch(event)){
change.execute(GameState.STATE_PLAY_INIT);
}elseif(text_over.onTouch(event)){
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
break;
default:
break;
}
}
publicGameOver(){
text_score=newDrawText();
text_score.setXY(screen_width/2,screen_height/2);
text_Mkuai=newDrawText();
text_Mkuai.setText(GameScore.SCORE+"分",60);
text_Mkuai.setXY(screen_width/4,screen_height/4);
text_again=newDrawText();
text_again.setText("重来",40);
text_again.setXY(screen_width/4,screen_height*3/4);
text_over=newDrawText();
text_over.setText("结束",40);
text_over.setXY(screen_width*3/4,screen_height*3/4);
}
publicvoidondraw(Canvascanvas){
text_score.setText(GameScore.SCORE+"分",60);
text_score.ondraw(canvas);
//text_Mkuai.ondraw(canvas);
text_again.ondraw(canvas);
text_over.ondraw(canvas);
}
publicvoidsetchange(changeStatechange){
//TODOAuto-generatedmethodstub
this.change=change;
}
publicvoidlogic(){
}
}
GamePlay.java
packagecom.example.bcbk;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Timer;
importjava.util.TimerTask;
importcom.example.bcbk.GameMenu.changeState;
importandroid.graphics.Canvas;
importandroid.util.Log;
importandroid.view.MotionEvent;
publicclassGamePlayextendsBaseProperty{
Listrowrects;
intk=-1;//判断第几个被点击
intSPEED=1;//游戏的速度
privatechangeStatechange;
publicbooleancan_click=true;//方块是否可以被点击
publicGamePlay(){
}
publicvoidinit(){
//创建5行,每一行中4个块,i代表第几行
rowrects=newArrayList();
for(inti=0;i<5;i++){
rowrects.add(newRowRect(i));
}
//初始化速度为1
SPEED=1;
//定时增加速度
GameScore.SCORE=0;
Timertimer=newTimer();
timer.schedule(newTimerTask(){
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
SPEED=SPEED+1;
}
},3000,3000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
}
publicvoidsetchange(changeStatechange){
this.change=change;
}
publicvoidondraw(Canvascanvas){
//TODOAuto-generatedmethodstub
//对行进行绘画
for(inti=0;irowrects.get(i).ondraw(canvas);
}
}
@Override
publicvoidonTouch(MotionEventevent){
//TODOAuto-generatedmethodstub
switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
if(can_click){
for(inti=0;irowrects.get(i).onTouch(event);
}
can_click=false;
}
break;
caseMotionEvent.ACTION_UP:
can_click=true;
break;
}
}
publicvoidlogic(){
for(inti=0;i//判断游戏是否结束
if(rowrects.get(i).isGAME_STATE()){
change.execute(GameState.STATE_OVER);
}
//移动每一行Y值
rowrects.get(i).moveY(SPEED);
//判断行是否出屏,出屏死亡
if(rowrects.get(i).isDie()){
//死亡后取出此行,
RowRectrowrect=rowrects.get(i);
//吧此行从list集合中移除
rowrects.remove(i);
//重置此行为第0行
rowrect.setI(0);
//重置此行生命为false
rowrect.setDie(false);
//重置此行点击为false
rowrect.setClick(false);
//重新添加进list集合进行绘制
rowrects.add(0,rowrect);
}
}
}
}
目录
1总论1
1.1项目概况1
1.2建设单位概况3
1.3项目提出的理由与过程3
1.4可行性研究报告编制依据4
1.5可行性研究报告编制原则4
1.6可行性研究范围5
1.7结论与建议6
2项目建设背景和必要性9
2.1项目区基本状况9
2.2项目背景11
2.3项目建设的必要性11
3市场分析14
3.1物流园区的发展概况14
3.2市场供求现状16
3.3目标市场定位17
3.4市场竞争力分析 17
4项目选址和建设条件19
4.1选址原则19
4.2项目选址19
4.3场址所在位置现状19
4.4建设条件20
5主要功能和建设规模22
5.1主要功能22
5.2建设规模及内容26
6工程建设方案27
6.1设计依据27
6.2物流空间布局的要求27
6.3空间布局原则28
6.4总体布局29
6.5工程建设方案30
6.6给水工程33
6.7排水工程35
6.8电力工程38
6.9供热工程46
6.10电讯工程47
7工艺技术和设备方案51
7.1物流技术方案51
7.2制冷工艺技术方案67
8节能方案分析73
8.1节能依据73
8.2能耗指标分析73
8.3主要耗能指标计算74
8.4节能措施和节能效果分析76
9 环境影响评价83
9.1设计依据83
9.2环境影响评价应坚持的原则83
9.3 项目位置环境现状84
9.4 项目建设与运营对环境的影响84
9.5 项目建设期环境保护措施84
9.6项目运行期环境保护措施86
10安全与消防87
10.1 安全措施87
10.2 消防88
11组织机构和人力资源配置92
11.1施工组织机构92
11.2基建项目部的主要职责92
11.3运营管理93
11.4人员来源、要求及培训94
12工程进度安排96
12.1建设工期96
12.2工程实施进度安排96
13投资估算与资金筹措98
13.1投资估算98
投资估算包括建设项目的全部工程,主要内容有:
主体建筑工程、道路硬化工程、绿化工程、其他费用及基本预备费。
98
13.2资金筹措99
14财务评价102
14.1评价依据及方法102
14.2基础数据与参数选取102
14.3营业收入及总成本费用估算103
14.4利润总额估算105
14.5盈亏平衡分析105
14.6财务评价106
15综合效益评价107
16招投标管理108
16.1编制依据108
16.2招标原则108
16.3招标方案109
16.4评标要点110
17结论及建议111
17.1结论111
17.2建议112