第一范文网 - 专业文章范例文档资料分享平台

基于android的五子棋游戏设计与实现本科毕设论文

来源:用户分享 时间:2026/1/9 3:33:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

//找到纵座标,也不在棋盘线外 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

}

whoRun = -1;

//是否正在下某一步棋过程中,主是电脑下棋时需要较长的计算时间,这期间一

private boolean isProcessing() { }

return whoRun == -1;

定不可以再响应触摸事件

4.2.2 改写onTouchEvent方法,监听触摸事件,在触摸处下棋子 //处理触摸事件

public boolean onTouchEvent(MotionEvent event) { }

private synchronized void playerRun(MotionEvent event){ }

private void player1Run(MotionEvent event){

//取得正确座标的棋子

Point point = newPoint(event.getX(), event.getY());

9

//只处理开局后的触摸弹起事件

if(event.getAction()!=MotionEvent.ACTION_UP){ }

//是否正在处理一步棋的过程中 if(isProcessing()){ }

//下一步棋 playerRun(event);

return true; return true;

return true;

4.2.3 playerRun方法判断轮到谁下棋子

if(isPlayer1Run()){//第一玩家下棋 }

player1Run(event); player2Run(event);

}else if(isPlayer2Run()){//第二玩家下棋

4.2.4 玩家一下棋的方法

}

if(point==null){//在棋盘外 }

if(allFreePoints.contains(point)){//此棋是否可下 }

//设置正在下棋子 setOnProcessing();

player1.run(player2.getMyPoints(),point); //刷新一下棋盘 refressCanvas();

//判断第一个玩家是否已经赢了 if(!player1.hasWin()){//我还没有赢 }

if(player2==computer){//如果第二玩家是电脑 }

//否则,提示游戏结束 setMode(PLAYER_TWO_LOST);

//10豪秒后才给玩家2下棋

refreshHandler.computerRunAfter(10); setPlayer2Run();

return ;

}else{

}else{

4.2.5 玩家二下棋的方法

private void player2Run(MotionEvent event){

Point point = newPoint(event.getX(), event.getY()); if(point==null){ }

if(allFreePoints.contains(point)){//此棋是否可下

setOnProcessing();

player2.run(player1.getMyPoints(),point); //刷新一下棋盘 refressCanvas(); //判断我是否赢了

10

return ;

}

}

if(!player2.hasWin()){//我还没有赢 }

setPlayer1Run(); //否则,提示游戏结束 setMode(PLAYER_ONE_LOST); }else{

4.2.6 实现判断输赢的方法

private final Point temp = new Point(0, 0); //我是否是否赢了

public final boolean hasWin(){

if(myPoints.size()<5){

return false; }

//只计算从最后一步棋子带来的变化

Point point = myPoints.get(myPoints.size()-1); int count = 1;

int x=point.getX(),y=point.getY(); //横向

temp.setX(x).setY(y);

while (myPoints.contains(temp.setX(temp.getX()-1)) && temp.getX()>=0

count ++;

&& count<5) {

}

if(count>=5){

return true; }

temp.setX(x).setY(y);

while (myPoints.contains(temp.setX(temp.getX()+1)) &&

count ++;

temp.getX()

}

if(count>=5){

return true;

11

基于android的五子棋游戏设计与实现本科毕设论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7r45x5op2u4uc568cqjj1x2cx44e3501abs_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top