没有合适的资源?快使用搜索试试~ 我知道了~
首页2013年Android游戏编程入门记:从零到数独开发
"手机游戏编程学习笔记Ⅰ(2013)记录了作者在2013年初开始接触和学习Android游戏开发的过程。这个文档由一名初学者编写,他意识到自己需要改变浑浑噩噩的生活状态,选择学习编程,尤其是Android游戏开发,希望能找到兴趣和成就感。作者决定从头开始,选择Android平台是因为其开源且与IOS类似,他认为打好基础后可以扩展到其他平台。 在学习初期,作者明确了Android的基本知识,了解到它是基于Linux的开源操作系统,主要应用编程语言是Java。他认识到Android的系统架构层次分明,包括应用程序层、程序框架层、系统运行库层和Linux内核层。作者意识到学习的重点在于掌握核心的Java编程,而不是急于求成,比如他原本计划学习Cocos2d-x,但由于资源复杂,决定从基础开始,如Eclipse+ADT的开发环境设置。 在具体操作中,作者经历了困难,如安装Eclipse+ADT时的困扰,最终在官方下载的预配置版本上找到了解决方案,这显示了他解决问题的决心和耐心。他开始写学习日记,以便跟踪进度和回顾,同时期待未来能帮助其他新手。 通过这篇学习笔记,我们可以看到一个新手如何克服困难,逐步深入Android游戏编程的世界,以及他对自我提升和个人兴趣追求的热情。这对于想要进入或正在学习IT领域的人员,特别是Android游戏开发者,具有很高的参考价值。"
资源详情
资源推荐
的某些状态信息。
%"% :该方法说明了将要显示给用户的活动。
@$ :用户可以开始与活动进行交互时会调用该方法。如播放动画和音乐。
:" :活动将要进入后台时会运行该方法。应该在该方法中保存程序的持久性状
态。当程序进入后台后,很可能会为前台的程序腾出空间而被终止,所以在某些情况下,
该方法可能是活动调用的最后一个方法,应该在该方法中保存下次要继续使用的任何数据。
% :停止活动,当用户不需要某个活动时可以调用该方法。如果内存不足时,
系统可能只是终止进程,而不调用该方法。
@%"% :将已处于停止状态的活动重新显示给用户。
%C :销毁活动。如果内存不足时,系统可能只是终止进程,而不调用该方法。
"#%"%"%D :让活动可以保存每个实例的状态,会自动保存所有
用户界面控件的状态。
@%%"%"%D :恢复实例状态,还原用户界面的状态。
知道了这些,还需要明确几个名词的含义:
意图:是一种描述具体动作的机制,一般用于连接活动。例如:打电话、发邮件等等。
服务:是在后台运行的任务无需用户之间与其交互。
内容提供者:是封装在自定义 : 中的一组数据,可以读取该数据向 : 中写入数据。
资源:是程序需要的、本地化后的文本字符串、位图或其他少量的非代码信息,程序生
成时,所需的所以资源都会被编译到应用程序中。其存储在项目内的 目录中。
2013 年 1 月 15 日 星期二 阴
这几天好忙,可以学习的时间很少,看着教程一点点的去写代码,但是可以说是不知所
云。原打算一边学一边写日记的,但是效率太慢,只好学一学,再回头来仔细研究下,这
样可以懂的彻底点。根据教程输入了大部分的示例游戏的代码,并成功的在 7% 上运行
了半试验品的数独游戏,从今天开始再来看一下全部代码,根据自己的理解并作以注释,
代码如下:(以下游戏代码是根据教程中的代码记录的)
打开 "*,"#",编写如下代码:
package org.example.sudoku; //程序包名
//以下为导入基本类库
import android.os.Bundle; //导入 Bundle 类,一种数据类型,用于捆绑字符串值的映射,在此活
动中主要用于 Activity 类中的 onCreate()函数的参数.
import android.app.Activity; //导入活动类,安卓程序都是由各种活动组成的.
import android.app.AlertDialog; //导入程序对话框类,用于弹出窗口(对话框)
import android.content.Intent; //导入意图类,用于连接各活动
import android.content.DialogInterface; //导入对话框接口类
import android.view.View; //导入视图类
import android.view.View.OnClickListener; //导入点击监听类
import android.view.Menu; //导入菜单类
import android.view.MenuInflater; //导入菜单构建(填充)类
import android.view.MenuItem; //导入菜单项类
import android.util.Log; //导入调试日志类
//声明 Main 类,继承 Activity,实现 OnClickListener 接口(继承父类,可以使用父类的方法;实现
接口需要重写接口中的方法才能使用)
public class Main extends Activity implements OnClickListener {
@Override //重写父类或接口的方法时使用此标签(无任何作用,只作以标记)
// 使用 onCreate()方法初始化,参数为 savedInstanceState,即以前保存的状态信息.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //调用父类的 onCreate()方法.初始化基本数
据
setContentView(R.layout.activity_main); //设置视图,参数为 XML 文件(需定义 XML 文
件)
//根据形参的 ID 创建按钮,按钮属于视图类。
View continueButton = this.findViewById(R.id.continue_button); //根据 ID 查
找视图
continueButton.setOnClickListener(this); //设置按钮的点击监听为当前活动
View newButton = this.findViewById(R.id.new_game_button); //按钮的 ID 均在
XML 中定义
newButton.setOnClickListener(this); //通知 Android 应触发的对象
View aboutButton = this.findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
View exitButton = this.findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
}
//声明点击方法,在单击视图时调用,重写接口中的 onClick()方法
public void onClick(View v){
switch(v.getId()){ //使用基本类库中的 getId()方法获得所点击控件的标示符(id)
case R.id.about_button:
Intent i=new Intent(this,About.class); //声明一个新的意图,用以跳转活动,
参数表示意图发送方为当前活动,接受方
为 About
startActivity(i); //启动意图
break;
case R.id.new_game_button:
openNewGameDialog(); //调用方法,新建游戏
break;
case R.id.exit_button:
finish(); //基本类库 finish()方法,关闭活动
break;
}
}
//声明静态不可以改变的字符串,用于调试日志.
private static final String TAG="Sudoku";
//声明新建游戏方法
private void openNewGameDialog(){
//在当前活动构建一个对话框,设置标题,设置项目组(不同的 R 值在不同的 XML 资源中定义),并展示它。
对话框的构建一般用”.”来连接构建方法,顺序为从上到下,从左到右。在 setItems()方法的形参中,是一
个条目列表和声明了一个对话框接口类的监听方法,该条目列表为 XML 资源中定义的列表;在监听方法中声
明了一个 onClick()方法,该方法监听点击动作,并执行命令,参数为对话框接口类的对象和一个整数型变
量,这个整型变量代表着所点击的项的值,即所点击的项在条目列表中的序号。
new
AlertDialog.Builder(this).setTitle(R.string.new_game_title).setItems(R.arr-
-ay.difficulty,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface,int i){
startGame(i); //调用开始游戏方法
}
}).show();
}
//声明开始游戏方法, intent.putExtra()方法用于传递意图所要传递的数据.
private void startGame(int i){
Log.d(TAG,"clicked on "+i); //程序调试日志
Intent intent = new Intent(Main.this ,Game.class); //声明一个新的意图,跳转活
动
intent.putExtra(Game.KEY_DIFFICULTY,i); //传递数据,键值名、键值数据
startActivity(intent); //启动意图
}
//初始化活动的菜单,覆盖父类的初始化函数
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu); //调用父类的初始化函数
MenuInflater inflater=getMenuInflater(); //声明一个新的菜单构造类对象,用
剩余50页未读,继续阅读
Seaol
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功