手把手教你开发2048!〖三〗
来源:互联网 发布:如何查看域名注册商 编辑:程序博客网 时间:2024/05/17 01:36
完成之前的两步,游戏大致的框架已经差不多了,现在我们需要一些游戏逻辑再具体的实现一下。
大家应该也发现了,现在的游戏没法运行的,因为初始化出来后并没有去填充。也就是说游戏开始时,我们应该有一个初始的两个随机数。
所以我们这里使用一个onSizeChanged()方法,因为这个方法进入游戏后会被调用:
@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);int cardwidth = (Math.min(w, h) - 10) / 4;addcard(cardwidth, cardwidth);MainActivity.getMainActivity().sethighScore();startgame();}由于每一张card都是正方形,所以我们获取手机的宽和高,最大的那一个用来计算,防止出现界面无法显示的问题。
MainActivity.getMainActivity().sethighScore();这个方法是在主activity中实例化的。这是为了方便操作。在这里,为了方便大家阅读,我把整个主activity放上来:
public class MainActivity extends Activity {private static MainActivity mainActivity=null;public MainActivity(){mainActivity=this;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tvScore = (TextView) findViewById(R.id.tvScore);highS= (TextView) findViewById(R.id.highscore); }public void getsp(int newhsvalue){SharedPreferences sharedPreferences = getSharedPreferences("highscore", Context.MODE_PRIVATE); Editor editor = sharedPreferences.edit();editor.putInt("highscorevalue",newhsvalue);editor.commit();}public void sethighScore(){SharedPreferences share=getSharedPreferences("highscore",Activity.MODE_WORLD_READABLE);int i=share.getInt("highscorevalue",0);highS.setText(i+"");}public int gethsfromsp(){SharedPreferences share=getSharedPreferences("highscore",Activity.MODE_WORLD_READABLE);int i=share.getInt("highscorevalue",0);return i;}public void ClearScore(){score=0;}public int ShowScore(){tvScore.setText(score+"");return score;}public void addScore(int s){score+=s;ShowScore();}private int score =0;private TextView tvScore,highS;public static int hsvalue=0;@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public static MainActivity getMainActivity() {return mainActivity;}}可以看到,在构造方法中,我们就实例化对象mainActivity,addScore方法是用来在每次滑动后,实时刷新游戏的分数并显示。
最高分我在这里使用了sharepreference方法,代码没有什么难点,大家可以熟悉一下,我们后面要在gameview中调用
在上面onSizeChanged方法中的addcard()方法的实现如下:
private void addcard(int cardwidth, int cardheight) {card c;for (int y = 0; y < 4; y++) {for (int x = 0; x < 4; x++) {c = new card(getContext());c.setNum(0);addView(c, cardwidth, cardheight);cardmap[x][y] = c;}}}
OK,我们第三步开发也实现了。游戏马上就要完成了。要继续开发,请看我的下一篇文章《手把手教你开发2048!〖三〗》
0 0
- 手把手教你开发2048!〖三〗
- 手把手教你开发2048!〖一〗
- 手把手教你开发2048!〖二〗
- 手把手教你开发2048!〖四〗
- android手把手教你开发launcher(三)
- 手把手教你开发chrome
- [swift实战入门]手把手教你编写2048(三)
- android手把手教你开发launcher(三)——启动安装的应用程序
- android手把手教你开发launcher(三)——启动安装的应用程序
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 手把手教你智能硬件开发(三) 控制LED灯
- 手把手教你做智能LED灯(三) 手机控制端开发
- Android开发之手把手教你写ButterKnife框架(三)
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 手把手教你开发一款IOS飞行射击游戏(三)
- 手把手教你开发Chrome扩展三:关于本地存储数据
- android手把手教你开发launcher(三)——启动安装的应用程序
- 手把手教你Symbian开发(书目征求意见)
- ZipArchive
- [LeetCode] N-Queens II
- POJ 1077 Eight
- jstl long转日期
- 拓扑排序
- 手把手教你开发2048!〖三〗
- PHP 静态页面生成
- 沙盒(sandbox)机制和文件操作
- 记事本写c#代码编译并理解编译执行原理
- mahout in action 2中文版(转) 推荐器介绍
- FFmpeg SDK开发模型之一:解码器
- Android 如何杀死Service
- CentOS下安装FTP
- Mac OSX的开机启动配置