猜白块android stuido 安卓毕业论文设计源代码

2401750 3905
    


来源:
Licence:
联系:
分类:
平台:
环境:
大小:
更新:
标签:
联系方式 :
免费下载 ×

下载APP,支持永久资源免费下载

限免产品服务请联系qq:1585269081

下载APP
免费下载 ×
下载 ×

下载APP,资源永久免费


论文定制和修改服务请联系qq:1585269081 如果出现不能下载的情况,请联系站长,联系方式在下方。

免费下载 ×

载论文助手APP,资源永久免费

论文定制和修改服务请联系qq:1585269081 免费获取

如果你已经登录仍然出现不能下载的情况,请【点击刷新】本页面或者联系站长


开发语言:java

游戏简介:别踩白块儿,这就是这个游戏唯一的一个规则。游戏简单易上手,并且有多重玩法,画面分为4行4列,每一行都只有一个黑色色块,你的任务就是按对他——游戏共三个模式,经典、街机、禅。经典模式中玩家的目标是在最短的时间内按完50个黑方块,每按对一个画面会自动下降。

游戏特性

本游戏设计灵感来自于钢琴,但是之前也有类似的钢琴游戏比如《极品钢琴》

但是极品钢琴键位较多,难度较大,不适合业余玩家使用。所以别踩百块就简化了操作,只保留了四个键位,可玩性得到了增强,而趣性也得到了保留

简单易玩,老少咸宜,可谓居家旅行+上班打发无聊得利器噢

5 x 3种好玩的模式

美妙的钢琴音效

顺畅的游戏体验

支持GameCenter排行榜 (鄙视作弊的)

支持社交网络分享,可以随时炫耀自己得成绩

警告,这个游戏很容易上瘾,自制力不好的人慎玩!

游戏背景

自从越南的的独立游戏开发者——Dong Nguyen花了几个晚上为游戏界打了一针鸡血后,《疯狂的小鸟》(Flappy Bird)带来的极简游戏风暴就一直没停歇过,事实上这股风暴根本停不下来。紧随其后,《2048》再一次掀起了极简游戏风暴。而《别踩百块》正是继承了这一极简风格。极简游戏之所以如此风靡,其关键点就在于其操作的简单性。操作的简单性导致了这个游戏对于任何人而言都很容易上手,不管是在校大学生、白领、甚至是老人小孩都很热衷于玩这款游戏。由于极易上手,操作简便,模式简单,不管是对于开发者还是使用者都是意见好事儿。对于开发者,简单的游戏更容易开发,也很容易受到欢迎甚至是风靡,对于使用者,人们可以利用碎片化的时间,无论是在地铁、公交课间休息,只要一个手机就可以玩了。

玩法评分 ★★★★★

《别踩白块儿》是一款非常考验反应速度的游戏,画面分为4行4列(某些模式除外),每一行都只有一个黑色色块,你的任务就是按对他——游戏共115个模式,其中耐玩性最高的就是经典、街机、限时模式了。经典模式中玩家的目标是在最短的时间内按完20、50、100或200个黑方块,每按对一个画面会自动下降。街机模式则没有时间限制,但画面会一刻不停的下落,而且速度越来越快,你要在这样的限制下,尽可能多的按对色块,漏掉或者按错游戏都会结束。限时模式则是给玩家10、30、60或100秒钟,比拼谁能准确按完的色块最多。

画面评分 ★★★☆☆

本游戏的画面还算可以。多彩的画面简洁而不繁琐。新版的画面相比以前的可谓好了十万八千里,同时也增加了许多的元素。

音效评分 ★★☆☆☆

音效嘛,呵呵,也和画面一样精简。整个游戏中除了按到方块时有一点声音外,没有任何音效音乐了。操作评分 ★★★★★

作为考验反应力的游戏,《别踩白块儿》的操作响应是很完美,例如在高速的街机模式中,这种流畅感尤其能得到体现。

整体评分 ★★★★☆

代入感是本游戏的一大缺失。《Flappy Bird》有熟悉的马里奥背景坐镇,《2048朝代版》有上下五千年护航,如果《别踩白块儿》能加点网络流行的神兽图,或者暴走漫画表情等,一定还可以让人气更上一层。

游戏框架

 

 

Play

开始游戏

游戏结束

退出

重新开始

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

启动流程:

< >打开eclipse编写代码:试运行运行结束 

 

 

操作指南

1、视线落在屏幕的中上方,为了预防不测。你在按这个的同时眼睛已经看下一个了。

2、街机模式一旦开启,玩家必须注意黑白块儿下滑的速度。初始是不快的,但是一旦玩家可以不断点击黑块,就会逐渐加速下滑的速度(增加不多,但是的确有)所以,建议大家,没有必要太过追求速度点击黑块,只要保证跟上初始下滑的速度即可。

3、把色块大致分成三种,第一种是单块,第二种是双,三,四块,第三种是场块,按的时候这三种在脑子里分别的用不同方法进行判定。这样就不至于按到六七百的时候乱了。

4、放平心态。早前一款超虐心游戏不知道牺牲掉了多少台手机,挂了摔手机的冲动也不是人人可以克制住。所以,在玩这款游戏之前,还是建议大家放平了心态。不要想着要刷多少分,休闲时,拿出手机来试一下手感,往往可以起到奇效。

5、眼睛一定不要盯着屏幕上的黑块,不然你会感觉手忙脚乱,把视野放到全局,虽然视线模糊了,但是不要慌,跟着感觉打就对了。

6、多手操作。这个没有要讲的,如果玩大屏设备(例如iPad)的玩家肯定早都上两只手了,据说可以单手刷满500以上的,都是撸神。双手操作,更容易跟上速度,不过需要注意协调性,往往会出现上下顺序点错的问题。

7、从下往上,分工进行。意思就是,玩家在看下滑的方块时,因为黑色更加醒目,大部分的玩家在前面几乎不会出现失误。往往到后面,长时间的眼睛色差疲劳,加上手指灵活性降低,一念之差就有可能功亏一篑。所以,玩家可以试着,降慢速度,从下方跟着下滑到最底的黑块进行点击,左右手分工左右方,可以保证双手平摊工作,不会造成手部疲劳。

部分功能源码:

BaseProperty.java

package com.example.bcbk;

 

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.Rect;

import android.view.MotionEvent;

 

public abstract class BaseProperty {

   public Paint paint;

   int screen_width=MainActivity.screen_width;

   int screen_height=MainActivity.screen_height;

   public abstract void onTouch(MotionEvent event);

  

}

gameMenu.java

package com.example.bcbk;

 

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Rect;

import android.util.Log;

import android.view.MotionEvent;

import android.widget.Toast;

 

//游戏菜单页面

public class GameMenu  extends BaseProperty{

   Rect targetRect;

   String str="Play";

   float x_left;

   float x_right;

   float y_top;

   float y_botton;

   changeState change;

   public GameMenu(){

      paint=new Paint();

      paint.setAntiAlias(true);

      paint.setColor(Color.WHITE);

      paint.setTextSize(70);

      targetRect = new Rect();

      //返回包围整个字符串的最小的一个Rect区域

      paint.getTextBounds(str, 0, str.length(), targetRect);

 

   }

   public void setChange(changeState change){

      this.change=change;

     

   }

   public void ondraw(Canvas canvas){

      canvas.drawRGB(0, 0, 0);

      int textheight=targetRect.height();

      int textwidth=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

   public void onTouch(MotionEvent event){

      float x=event.getX();

      float y=event.getY();

     

      switch (event.getAction()) {

      case MotionEvent.ACTION_DOWN:

        

         if(isStart(x, y)){

            if(change!=null){

               change.execute(GameState.STATE_PLAY_INIT);

            }

         }

         break;

      default:

         break;

      }

   }

   public boolean isStart(float x,float y){

 

      if(x>x_left&&x<x_right){

         if(y>y_top&&y<y_botton){

            return true;

         }

      }

      return false;

   }

   public interface changeState{

      public void execute(int state);

   }

  

}

GameOver.java

package com.example.bcbk;

 

import android.graphics.Canvas;

import android.util.Log;

import android.view.MotionEvent;

 

import com.example.bcbk.GameMenu.changeState;

 

public class GameOver extends BaseProperty {

 

   private changeState change;

   private DrawText text_score;//分数

   private DrawText text_Mkuai;//每秒块数

   private DrawText text_again;//重来

   private DrawText text_over;//结束

   @Override

   public void onTouch(MotionEvent event) {

      // TODO Auto-generated method stub

      switch (event.getAction()) {

      case MotionEvent.ACTION_DOWN:

         if(text_again.onTouch(event)){

            change.execute(GameState.STATE_PLAY_INIT);

         }else if(text_over.onTouch(event)){

            android.os.Process.killProcess(android.os.Process.myPid());

            System.exit(0);

         }

         break;

 

      default:

         break;

      }

 

 

   }

   public GameOver(){

      text_score=new DrawText();

      text_score.setXY(screen_width/2, screen_height/2);

     

      text_Mkuai=new DrawText();

      text_Mkuai.setText(GameScore.SCORE+"分", 60);

      text_Mkuai.setXY(screen_width/4, screen_height/4);

     

      text_again=new DrawText();

      text_again.setText("重来", 40);

      text_again.setXY(screen_width/4, screen_height*3/4);

     

      text_over=new DrawText();

      text_over.setText("结束", 40);

      text_over.setXY(screen_width*3/4, screen_height*3/4);

     

   }

   public void ondraw(Canvas canvas){

      text_score.setText(GameScore.SCORE+"分", 60);

      text_score.ondraw(canvas);

   // text_Mkuai.ondraw(canvas);

      text_again.ondraw(canvas);

      text_over.ondraw(canvas); 

   }

   public void setchange(changeState change) {

      // TODO Auto-generated method stub

      this.change=change;

   }

   public void logic(){

     

   }

}

GamePlay.java

package com.example.bcbk;

 

import java.util.ArrayList;

import java.util.List;

import java.util.Timer;

import java.util.TimerTask;

 

import com.example.bcbk.GameMenu.changeState;

 

import android.graphics.Canvas;

import android.util.Log;

import android.view.MotionEvent;

 

public class GamePlay extends BaseProperty {

 

   List<RowRect> rowrects;

   int k = -1;// 判断第几个被点击

   int SPEED = 1;//游戏的速度

   private changeState change;

   public boolean can_click = true;// 方块是否可以被点击

 

   public GamePlay() {

 

   }

   public void init(){

      // 创建5行,每一行中4个块,i代表第几行

      rowrects = new ArrayList<RowRect>();

      for (int i = 0; i < 5; i++) {

         rowrects.add(new RowRect(i));

      }

      //初始化速度为1

      SPEED=1;

      //定时增加速度

      GameScore.SCORE=0;

     

      Timer timer = new Timer();

      timer.schedule(new TimerTask() {

        

         @Override

         public void run() {

            // TODO Auto-generated method stub

            SPEED=SPEED+1;

         }

      }, 3000, 3000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.

   }

 

   public void setchange(changeState change) {

      this.change = change;

   }

 

   public void ondraw(Canvas canvas) {

      // TODO Auto-generated method stub

      // 对行进行绘画

      for (int i = 0; i < rowrects.size(); i++) {

         rowrects.get(i).ondraw(canvas);

      }

 

   }

 

   @Override

   public void onTouch(MotionEvent event) {

      // TODO Auto-generated method stub

      switch (event.getAction()) {

      case MotionEvent.ACTION_DOWN:

         if (can_click) {

            for (int i = 0; i < rowrects.size(); i++) {

               rowrects.get(i).onTouch(event);

            }

            can_click=false;

         }

         break;

 

      case MotionEvent.ACTION_UP:

         can_click = true;

         break;

      }

 

   }

 

   public void logic() {

 

      for (int i = 0; i < rowrects.size(); i++) {

         // 判断游戏是否结束

         if (rowrects.get(i).isGAME_STATE()) {

            change.execute(GameState.STATE_OVER);

         }

         // 移动每一行Y值

         rowrects.get(i).moveY(SPEED);

         // 判断行是否出屏,出屏死亡

         if (rowrects.get(i).isDie()) {

 

            // 死亡后取出此行,

            RowRect rowrect = rowrects.get(i);

            // 吧此行从list集合中移除

            rowrects.remove(i);

            // 重置此行为第0行

            rowrect.setI(0);

            // 重置此行生命为false

            rowrect.setDie(false);

            // 重置此行点击为false

            rowrect.setClick(false);

            // 重新添加进list集合进行绘制

            rowrects.add(0, rowrect);

 

         }

 

      }

   }

}


看大家都在讨论什么

0 条评论
免费下载 ×

下载APP,支持永久资源免费下载

下载APP 免费下载
温馨提示
请用电脑打开本网页,即可以免费获取你想要的了。