基于Android的五子棋游戏设计与实现毕业论文
绝世美人儿
733次浏览
2021年01月27日 22:25
最佳经验
本文由作者推荐
六年级音乐教学计划-经典智力题及答案
安徽大学
本科毕业论文(设计、创作)
题
目:
基于
Android
的五子棋游戏设计与实现
学生姓名:
刘锋
学号:
E01014305
院
(系)
:
计算机科学与技术学院
专业:
计算机科学与技术
入学时间:
2010
年
9
月
导师姓名:
邹海
职称
/
学位:
副教授
/
博士
导师所在单位:
安徽大学计算机科学与技术学院
完成时间:
2014
年
5
月
基于
Android
的五子棋游戏设计
摘
要
手机游戏被业内人士称为继短信之后的又一座
“金矿”
。
从
2003
年到
2010
年的市场销售额年均复
合增长率为
62.4 %
。可以看出,手机游戏将经历一个黄金发展时期。
3G
的普及、手机显示性能的提高 、
手机屏幕的扩大和较高的分辨率,解决了传统手机行业的很多弊端,手机休闲娱乐应用将成为
PC
休闲
娱乐之后又一重要业务增长点。
同时
Android
采用了 键盘形式的按键,
可以完成更复杂的操作。
Android
虽然基于
Java
,但是其虚拟机是基于寄存器的(这与普通的
Java
基于堆栈不同)
,速度 得到很大的提
升,这为
Android
平台上开发游戏提供了坚强的后盾。
本论文主要阐述以面向对象的程序开发语言
eclipse
为开发工具
, < br>基于智能手机
Android
之上设计
一个五子棋游戏。五子棋起源于中国古代 的传统黑白棋种之一
,
它不仅能增强思维能力
提高智力
,
而且
富含哲理
,
有助于修身养性。本系统是本系统中设定了人机对战和人人对战两种模 式。人机对战实现的
是一些简单的算法,人人对战只是进行了输赢方的判定。它与
javame
的五子棋设计有许多的不一样,
Android
本来就是全触摸的形式,而且操作非常 简单。
关键词:五子棋
;
Android
;人工智能
I
The Five in a Row Game Based on Android
Abstract
Mobile games since the industry was called after a text message
annual sales surged 62.4 percent from compound rate for. Can see
,
mobile games will experience a golden
period of development. 3G phone displays the popularization and performance improvement
,
the expansion of
the phone's screen
,
and a higher resolution
,
solve the traditional mobile phone industry's many drawbacks
,
mobile
entertainment
applications
will
be
after
PC
entertainment
another
important
business
growth.
Meanwhile
Android
also USES
a
keyboard
forms
of
buttons
that
can
do
more
complex
operation.
Android
though
,
but
its
based
on
a
Java
virtual
machine
(which
is
based
on
the
register
with
the
ordinary
Java
stack-based
different)
,
speed
,
it
got
a
lot
of
ascension
for
the
Android
platform
games
provide
a
strong
backing.
This
paper
mainly
expounds
the
object-oriented
program
development
in
eclipse
for
language
development
tool,
smartphone
Android
based
on
above
design
a
five
in
a
row
game.
Gobang
originated
in
China
ancient
traditional
black
white
kind,
it
not
only
can
enhance
one
of
thinking
capacity,
improve
intelligence and high in philosophy, helps to cultivate one's morality raises a gender. This system is the system
that
set
the
man-machine
against
and
everyone
against
two
patterns.
The
realization
man-machine
against
some
simple
algorithm,
everyone
was
against
just
win
the
judgement
of
the
party.
It
has
with
the
javame
gobang chess design many are dissimilar, Android is the entire touching form originally, moreover operates is
simple.
Keywords:five-in-a- row
;
android
;
artificial intelligence
II
目
录
1
引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
1
2
概述„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
2
2.1
背景„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
2
2.2
课题来源„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
2
2.3
课题研究现状及应用前景„„„„„„„„„„„„„„„„„„„„„„„„„
3
3 Android
开发环境„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
3
3.1 Android
开发环境变量配置„„„„„„„„„„„„„„„„„„„„„„„„
3
3.1.1 JDK
的配置„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
3
3.1.2 Android
开发插件的安装„„„„„„„„„„„„„„„„„„„„„„„„
4
3.1.3 AVD
的创建„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
5
4
游戏相关技术„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
5
4.1
游戏布局„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
5
4.1.1
画盘线„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
5
4.1.2
双缓冲技术画棋子„„„„„„„„„„„„„„„„„„„„„„„„„„„
6
4.1.3
在触摸处画棋子„„„„„„„„„„„„„„„„„„„„„„„„„„„„
7
4.1.4 newPoint
方法将座标调整到对应的棋位上„„„„„„„„„„„„„„„„
7
4.2
人人对战„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
8
4.2.1
设置谁走的标记„„„„„„„„„„„„„„„„„„„„„„„„„„„„
8
4.2.2
在触摸处下棋子„„„„„„„„„„„„„„„„„„„„„„„„„„„„
9
4.2.3
判断轮到谁下棋子„„„„„„„„„„„„„„„„„„„„„„„„„„„
9
4.2.4
玩家一下棋的方法„„„„„„„„„„„„„„„„„„„„„„„„„„„
9
4.2.5
玩家二下棋的方法„„„„„„„„„„„„„„„„„„„„„„„„„„
10
4.2.6
实现判断输赢的方法„„„„„„„„„„„„„„„„„„„„„„„„„
11
4.2.7
提示游戏结束„„„„„„„„„„„„„„„„„„„„„„„„„„„„
13
4.3
人机对战„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
14
5
游戏的实现„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
15
5.1
游戏主界面„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
15
5.2
游戏帮助界面„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
16
5.3
五子棋介绍界面„„„„„„„„„„„„„„„„„„„„„„„„„„„„
16
5.4
游戏界面„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
17
5.5
退出界面„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
17
III
6
结论„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
18
主要参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
19 致谢„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
20
IV
1
引言
随着社会的发 展,目前全球的手机用户数量已经超过了
PC
机的数量,而且手机的数
量正在快速增长 ,其中智能手机所占的比例越来越大,特别是随着
3G
技术发展时代的到
来,移动互联 网将是一个巨大的市场,许多国际大公司以及国内的大公司都在抢占智能手
机领域的市场份额。这期间, 出现的智能手机可谓五花八门,种类繁多,但是真正好用,
受用户喜爱的智能手机并不多。
当互联网巨头
宣布依靠
android
系统进军手机 操作系统领域之后,三年来
Android
一路高歌,快速的获得众多用户和厂商的认同。随着
Android
手机终端的逐渐热
销,
Android
也引起众多手 机应用程序开发商的关注,
Android
的出现带给了智能手机领
域更多的机遇和挑 战,由于
Android
基于
Linux
内核且具有开源、免费的特性,它迅 速得
到广大爱好者以及许多厂商的支持,基于
Android
所开发的手机游戏拥有巨 大潜力已成为
行业共识
[
3
]
。
3G
的 普及、手机显示性能的提高、手机屏幕的扩大和较高的分辨率,解决了传统手机
行业的很多弊端,
同时
Android
也采用了键盘形式的按键,
可以完成更复杂的操作。
A ndroid
虽然基于
Java
,但是其虚拟机是基于寄存器的(这与普通的
Java
基于堆栈不同)
,速度得
到很大的提升,这为
Android
平台上开发游戏提供了坚强的后盾
[
1
]
。
随着移动开 发技术的不断升级和终端设备成本的下降,近年来,手机在普通消费人群
中得到了极大的普及。凭借其便 于携带、沟通迅捷、功能多样、私密性强等独有优势,手
机已经成为普通民众不可替代的随身工具。其益 智、趣味和休闲的特点迎合了消费者的娱
乐需要,手机游戏的开发推广已经成为手机生产商和运营商重要 的业务增长点,游戏软件
产业价值不断提升。手机游戏是手机的一种高附加值操作软件,游戏编程是手机 软件编程
的重要组成,同时也持续推动手机软件技术升级进步。
中华民族是一个有着 几千年悠久历史和璀璨文化的国家,而棋类娱乐却早已突破了纯
游戏的范畴而成为中国传统文化的一个分 支。五子棋起源于中国古代的传统黑白棋种之
一,
现代五子棋日文称之为
“连珠”,
英译为
Renju
,
英文称之为
“
Gobang”
或
“
FIR
”
(
Five
in
a
Row
的缩写)
,中文亦有“连五子”
、
“五子连”
、
“串珠”
、
“五目”
、
“五目碰”
、
“ 五格”
等多种称谓。五子棋的棋文化源渊流长,具有东方的神秘和西方的直观,是中西文化的交
流点,是古今哲理的结晶。
现在人们压力日益增大,需要劳逸结合才能获得更高的工作效率, 工作之余的娱乐对
每一个人来说都是必不可少的。五子棋这种娱乐方式简单易学又具有深奥的技巧,非常 富
有趣味性和消遣性。
在经过不断发展后,
五子棋已经成为棋盘娱乐的一个重要的组成 部分,
它能够增强思维能力、开发智力,是人们休闲娱乐的不错选择。
近来随着计算 机和手机的快速发展,各种各样的游戏层出不穷,使得人们能有更多的
娱乐项目,而棋类游戏能起到锻炼 人的思维和修身养性的作用,而且棋类游戏水平颇高,
大有与人脑分庭抗礼之势。现在的五子棋游戏软件 基本上可以分为两类:一类是网络五子
1
棋游戏软件,另一类是单机版 五子棋游戏软件。很少有手机版的五子棋游戏软件。为了满
足手机人群的需求,本文设计了这款手机版的 五子棋游戏软件,可以供人们闲暇时间随时
随地地进行娱乐,提高自己的五子棋水平,实用性强
[
5
]
。
2
概述
2.1
背景
在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和 生活
理念。游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发
展 。游戏平台是经过从游戏机到电视游戏,然后从到
pc
游戏,到手机游戏,中间经历了
很多的技术的更新和变革。但随着新技术的发展和我们生活水平质量的提高,手机开始逐
渐变为普及,因 为手机是非常小巧便捷的,而且方便的特性成为我们日常生活中必备通讯
工具。而基于手机平台的游戏也 就拥有的市场空间是巨大的,也因随着
3g
的开通和应用,
手机游戏必然会迎来新的一 轮游戏热潮!
2.2
课题来源
现在的移动电话是小型的计算 机,它的处理能力与台式机的标准处理能力相比很有
限,但是足够运行一个小型的游戏。现在的手机的一 个特性就是它们还是网络计算机,能
够高速发送和接收数字数据。
除了语音数据以外,
它们还可以发送和接收其它类型的数据。
所以这样的网络游戏也可以在手机上实现。短信类游戏就好像“ 虚拟宠物”那样。短信游
戏是通过玩家和游戏服务商通过短信中的文字的内容来交流,达到进行游戏的目 的的一种
文字游戏。
由于短信游戏的整个游戏过程都是通过文字来表达,造成短信游 戏的娱乐性
较差。但是短信游戏却是兼容性最好的手机游戏之一。只要您的手机可以发短信,您就可以畅快的享受短信游戏给您带来的快乐了。图形类游戏更接近我们常说的“电视游戏”
,
玩 家通过动画的形式来发展情节进行游戏。由于游戏采用了更为直观且更为精美的画面直
接表现,
因此图形类游戏的游戏性和代入感往往较文字类游戏高。
因此广受玩家们的欢迎。
嵌入式游戏是 一种将游戏程序预先固化在手机的芯片中的游戏。由于这种游戏的所有数据
都是预先固化在手机芯片中的 ,因此这种游戏是无法进行任何修改的。也就是说,您不能
更换其它游戏的,只能玩您手机中已经存在的 娱乐游戏,而且您也不能将它们删除。手机
在网络游戏行业在多年的技术经验与运营经验的积累与总结之 后,到了
2009
年迫不及待
的需要创新出新的游戏模式和崭新的运营模式来推动手机 游戏市场的爆发和发展。其中比
较吸引人们的是手机的休闲类的游戏。应该可以说它是与
PC< br>网络游戏完全的脱离开了,
而且充分发挥了自身的优势手机终端。休闲类的游戏恰巧与之相反,只 需要很少的网络流
量的网络环境,通过少量多次的游戏形式带给玩家流畅的游戏体验满足玩家瞬间提升的 快
感,但是同时却很难具有长期的“沉迷”性。
本题目是基于
Androi d
平台开发的一个小型的程序。其实都差不多,在有
JAVA
的智
能手机上都 可以运行。其实手机是我们生活中不可缺少的工具,这些小游戏可以带给我们
快乐和放松我们的心情。无 论什么样手机,我想买起来的时候上面就有一些它自带的各种
2
小游戏,其中有一个独特的小游戏也是非常重要的。
2.3
课题研究现状及前景
在我们的生活中有许多的游戏,但是不同的游戏,它也会给玩家 带来不同的感受和生
活理念。游戏可以说我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产 业市
场的发展即游戏周边。游戏平台是经过从游戏机到电视游戏,然后从到
pc
游戏, 到手机
游戏,中间经历了很多的技术的更新和变革。但随着新技术的发展和我们生活水平质量的
提高,手机开始逐渐变为普及,因为手机是非常小巧便捷的,而且方便的特性成为我们日
常生活中必备通 讯工具。而基于手机平台的游戏也就拥有的市场空间是巨大的,随着
3G
的开通和应用,手机游 戏必然会迎来新的一轮游戏热潮
现在的手机的已经不是以往那种传统意义上的手机了,称之为 智能机再合适不过了,
它不仅具备打电话发短信等传统功能而且对于计算机可以完成的大部分工作也可以 完全
胜任。智能手机能够高速发送和接收数字数据,除了语音数据以外,它们还可以发送和接
收 其它类型的数据,如是图像等。所以网络游戏也是完全可以在手机上实现的。其中比较
吸引人们的是手机 上休闲类的游戏。应该可以说它是与
PC
网络游戏完全的脱离开了,而
且充分发挥了自 身的优势。休闲类的游戏只需要很少的网络流量的网络环境,通过少量多
次的游戏形式带给玩家流畅的游 戏体验满足玩家瞬间提升的快感,但是同时却很难具有长
期的“沉迷”性,可以说是有百利而无一害。本 次设计是基于
Android
平台开发的一个小
型的五子棋游戏程序。
五子棋 游戏的简单易学,
老少皆宜这些特性与智能手机的移动方便,
大范围普及等特点结合起来,必定 会大放光芒,广受欢迎的。
也真是由于上文所述的各种优势,导致手机五子棋游戏被越来越多 的人研究学习,可
以说程序虽小但五味俱全,作为入门学习是再合适不过的了。网络上流传的五子棋游戏 界
面精美,风格各异,实在是已经达到巅峰之作,作者在此并不想去做那锦上添花之举,所
以对 于本次设计论文有一个明确的定位,在完成五子棋游戏的基本对战功能的设计同时不
再做各种附加功能的 加强而是对其中所涉及的算法进行更加深入的学习。
3 Android
开发环境
本章将主要介绍如何构建
Android
开发环境,包括获取
Android SDK
、
Eclipse
以及
进行
Android Eclipse
插件设置等。
3.1 Android
开发环境变量配置
3.1.1 JDK
的配置
JDK
的配置并没有什么值得特别叙述的东西,
在此主要阐述下
JDK
环境变量的配置问
题。首先右键点击我的电脑
->
属性
->
高级系统设置,点击下面的环境变量,在下面的
“系统变量”处选择新建,在变量名处输入
JA
V
A_HOME
在变量值输入
JDK
路径,确定
后再新建一个变量名为
Classpath
,变量值为
%JA
V
A _HOME%/lib/;%JA
V--A_HOME%/l
ib/
的变量
,
确定后找到
PATH
的变量,双击或点击编辑,在变量值最前面 加上
%J
A
V
A_HOME%/bin
;
最后点击确定按 钮即可
[
4
]
。如图
3-1
所示。
3
图
3-1 JDK
环境变量设置
3.1.2 Android
开发插件的安装
打开
Eclipse,
在菜单栏上选择
help->Install New SoftWare
在弹出的界面上选择
ad d
,
将弹出如下界面,如图
3-2
所示。
图
3-2 ADT
的安装
在
图
3-2
中
Name
处
键
入
And roid
(
名
字
可
自
定
义
)
,< br>在
Location
出
键
入
/android/eclips e/
。
然后点击
ok
,
在后续的弹出界面中选择
next
后进
行安装。
安装
android
< br>开发插件后,重启
eclipse
。点击菜单
window->prefere nces
,将进入一
个更新界面。选择你的
android
SDK
解压后的目录,选错了就会报错,这个是升级工具,
可以进行手动选择。升级
SDK
版 本
,
选择菜单
window->Android sdk and avd manager
,如图
3-3
所示。
4
图
3-3 SDK
的配置
3.1.3 AVD
的创建
新建
A
VD(android virtual device)
和配置
SDK
差不多,
进入
android sdk and avd manager,
选中
Virtual Devices
点击
New
按钮,如图
3-4
所示。
图
3-4 A
VD
的创建
4
游戏相关技术
本章节主要介绍一下此论文中用到了的
Android
的布局文件,可视化控件以及它们的
具体实现。
4.1
游戏布局
4.4.1
画盘线
以手工画图方式讲明白棋盘的座标计算方法:
1
取得屏幕宽高;
2
计算出第一根线
5
与左边和上边的距离;
3 推算其他线条计算方法。使用程序实现以上计算方法,创建出
15
根横线与竖线,存进集合 中。
for (int i = 0; i <= maxX; i++) {//
竖线
(new Line(xOffset+i*POINT_SIZE, yOffset,
}
for (int i = 0; i <= maxY; i++) {//
横线
(new Line(xOffset, yOffset+i*POINT_SIZE,
xOffset+i*POINT_SIZE, yOffset+maxY*POINT_SIZE));
}
for (Line line : lines) {
ne(,
,
,
,
(maxX+1)*POINT_SIZE, yOffset+i*POINT_SIZE));
//
在
ondraw
方法画出所有棋盘线
paint);
}
4.1.2
双缓冲技术画棋子
复制棋子对应的图片(四张)到工程中
,
使用这四张图片生成四个
Bitmap:1
从
context
中取得图片的代码
Resources resources = text().getResources();
Drawable drawable = wable(_point)
//
为指定颜色对应的图片创建
bitmap
对象并放入到数组中
//
创建
Bitmap
内存缓冲区(申请内存空间)
Bitmap bitmap = Bitmap(POINT_SIZE, POINT_SIZE,
//
创建画布、并设置将内容画到上面创建的
Bitmap
上
Canvas canvas = new Canvas(bitmap);
//
设置资源画的范围大小
nds(0, 0, POINT_SIZE, POINT_SIZE);
//
将图像资源画到缓冲区中
(canvas);
//
把缓存区引用存进数组中(注意将下标定义以颜色命名的常量)
bitmaps[color] = bitmap;
6
2
将图片画到
Bitmap
(内存缓冲区)的过程
public void fillPointArrays(int color,Drawable drawable) {
_8888);
}
在
onDraw
方法将其在随意位置画出
tmap(bitmaps[color_index],0,0,paint);
4.1.3
在触摸处画棋子
通过
onTouchEvent
方法获得触摸位置 座标
,
以此座标创建一个棋子,触发
onDraw
方
法,把刚才的棋 子画出来
public boolean onTouchEvent(MotionEvent event) {
Point point = newPoint((), ());
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)) {
(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
(i);
//
找到纵座标,也不在棋盘线外
isOutsideChessboard = false;
break;
}
}
//
纵标在棋盘线外
if(isOutsideChessboard){
return null;
}
//
横座标和纵座标都不在棋盘线外
return p;
}
4.2
人人对战
4.2.1
设置标记
--whoRun
表示应该轮到 谁下棋,
1
为玩家
1
下,
2
为玩家
2
下,
-1
表示玩家正在下
private void setPlayer2Run(){
}
whoRun = 2;
//
默认第一个玩家先行
private int whoRun = 1;
private void setPlayer1Run(){
}
private boolean isPlayer1Run(){
}
private boolean isPlayer2Run(){
}
return whoRun==2;
return whoRun==1;
whoRun = 1;
//
是否轮到人类玩家下子
//
是否轮到人类玩家下子
//
正在下的过程中,主是因为 电脑有较长的计算时间,这期间一定不可以再响应
触摸事件
private void setOnProcessing(){
8