当前位置:首页 > 基于android的五子棋游戏设计与实现本科毕设论文
图3-1 JDK环境变量设置
3.1.2 Android开发插件的安装
打开Eclipse, 在菜单栏上选择 help->Install New SoftWare 在弹出的界面上选择add,将弹出如下界面,如图3-2所示。
图3-2 ADT的安装
在图3-2中Name处键入Android(名字可自定义),在Location出键入https://dl-ssl.google.com/android/eclipse/。然后点击ok,在后续的弹出界面中选择 next后进行安装。
安装android 开发插件后,重启eclipse。点击菜单window->preferences,将进入一个更新界面。选择你的android SDK解压后的目录,选错了就会报错,这个是升级工具,可以进行手动选择。升级SDK版本,选择菜单 window->Android sdk and avd manager,如图3-3所示。
4
图3-3 SDK的配置
3.1.3 AVD的创建
新建AVD(android virtual device)和配置SDK差不多,进入android sdk and avd manager,选中Virtual Devices 点击New按钮,如图3-4所示。
图3-4 AVD的创建
4 游戏相关技术
本章节主要介绍一下此论文中用到了的Android的布局文件,可视化控件以及它们的具体实现。 4.1 游戏布局 4.4.1 画盘线
以手工画图方式讲明白棋盘的座标计算方法:1 取得屏幕宽高;2 计算出第一根线
5
与左边和上边的距离;3 推算其他线条计算方法。使用程序实现以上计算方法,创建出15根横线与竖线,存进集合中。
for (int i = 0; i <= maxX; i++) {//竖线
lines.add(new Line(xOffset+i*POINT_SIZE, yOffset,
}
for (int i = 0; i <= maxY; i++) {//横线
lines.add(new Line(xOffset, yOffset+i*POINT_SIZE,
xOffset+i*POINT_SIZE, yOffset+maxY*POINT_SIZE));
}
for (Line line : lines) {
canvas.drawLine(line.xStart, line.yStart, line.xStop, line.yStop,
(maxX+1)*POINT_SIZE, yOffset+i*POINT_SIZE)); //在ondraw方法画出所有棋盘线 paint);
}
4.1.2 双缓冲技术画棋子
复制棋子对应的图片(四张)到工程中,使用这四张图片生成四个Bitmap:1 从context中取得图片的代码
Resources resources = this.getContext().getResources();
Drawable drawable = resources.getDrawable(R.drawable.green_point) //为指定颜色对应的图片创建bitmap对象并放入到数组中
//创建Bitmap内存缓冲区(申请内存空间)
Bitmap bitmap = Bitmap.createBitmap(POINT_SIZE, POINT_SIZE, //创建画布、并设置将内容画到上面创建的Bitmap上 Canvas canvas = new Canvas(bitmap); //设置资源画的范围大小
drawable.setBounds(0, 0, POINT_SIZE, POINT_SIZE); //将图像资源画到缓冲区中 drawable.draw(canvas);
//把缓存区引用存进数组中(注意将下标定义以颜色命名的常量) bitmaps[color] = bitmap;
6
2 将图片画到Bitmap(内存缓冲区)的过程
public void fillPointArrays(int color,Drawable drawable) {
Bitmap.Config.ARGB_8888);
}
在onDraw方法将其在随意位置画出
canvas.drawBitmap(bitmaps[color_index],0,0,paint);
4.1.3 在触摸处画棋子
通过onTouchEvent方法获得触摸位置座标,以此座标创建一个棋子,触发onDraw方法,把刚才的棋子画出来
public boolean onTouchEvent(MotionEvent event) {
Point point = newPoint(event.getX(), event.getY()); refressCanvas();
//刷新一下棋盘,触发onDraw函数
}
4.1.4 newPoint方法将此座标调整到对应的棋位上(以手工画图的方式确定棋子四周的范围的计算方)
private Point newPoint(Float x, Float y){
//是否在棋盘线以外
boolean isOutsideChessboard = true; Point p = new Point(0, 0); for (int i = 0; i <= maxX; i++) {
if (((i-1) * POINT_SIZE + xOffset + POINT_SIZE/2) <= x
&& x < (i * POINT_SIZE + xOffset + POINT_SIZE/2)) { p.setX(i);
//找到横座标,证明不在棋盘线以外 isOutsideChessboard = false; break;
}
}
//如果横坐标在棋盘线外,返回空,不下棋子 if(isOutsideChessboard){
return null; }
//重置标志
isOutsideChessboard = true; for (int i = 0; i <= maxY; i++) {
if (((i-1) * POINT_SIZE + yOffset + POINT_SIZE/2) <= y
&& y < (i * POINT_SIZE + yOffset + POINT_SIZE/2)) {
7
p.setY(i);
共分享92篇相关文档