五 虎 棋 源 代 码
//主程序代码及解析
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.Ticker;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Gameplay extends MIDlet implements CommandListener {
public int red1=255,green1=0,blue1=255;
public int red2=0,green2=255,blue2=54;
public AudioPlay player;
public byte I=0;// 此变量有来判断背景图片的选择
public Image img; //背景图片
private Form form;
private Ticker ticker; //滚动字幕
private Command fexit,fok;//第一个屏幕的退出和确定按钮
private Command sok;//第二个屏幕,主菜单的选择按钮
private Command tok,tback;//第三个屏幕,音乐,图片的按钮
private Command kaiqi,kback;//选择音乐时的开启按钮和一个返回第三个屏幕的按钮
private Command ook;//选择图片背景后跳转到sList
private Command wok;//声音开关的按钮
private List fList,sList,tList,oList,wList;
private text shoum;//游戏说明的文档
public Gameplay() {
try{
img=Image.createImage("/11.png");
}catch(java.io.IOException e){} //设置默认的播放声音
player=new AudioPlay("yin0.mid","audio/midi");
player.loadResource();player.setLoop();player.play();
shoum=new text(this);
form=new Form(null);
ticker=new Ticker("第五届齐鲁软件大赛参赛作品--80后");
form.setTicker(ticker);
form.append(img);
fok=new Command("进入",Command.OK,1);
fexit=new Command("退出",Command.EXIT,1);
sok=new Command("选择",Command.OK,1);
tok=new Command("确定",Command.OK,2);
tback=new Command("返回",Command.BACK,2);
kaiqi=new Command("开启",Command.OK,3);
kback=new Command("返回",Command.BACK,3);
ook=new Command("确定",Command.OK,4);
wok=new Command("确定",Command.OK,5);
form.addCommand(fok);
form.addCommand(fexit);
form.setCommandListener(this);
String[]string1 = {
"开始游戏",
"游戏设置",
"游戏说明",
"声音控制"
};
Image[]image1 = null;
try{
Image icon = Image.createImage("/icon.png");
image1 = new Image[]{
icon,
icon,
icon,
icon
};
}catch (java.io.IOException err) {}
fList = new List(" 五虎棋", Choice.IMPLICIT, string1, image1);
fList.addCommand(sok); //为主菜单添加选择按钮
fList.setCommandListener(this);
String[] string2={"背景音乐","背景图片"};
Image[]image4 = null;
try{
Image icon = Image.createImage("/53.png");
Image icon1 = Image.createImage("/54.png");
image4 = new Image[]{
icon,
icon1,
};
}catch (java.io.IOException err) {}
sList = new List(" 五虎棋", Choice.IMPLICIT, string2, image4);
sList.addCommand(tok);
sList.addCommand(tback);
sList.setCommandListener(this);
String[] string3={" 梁祝"," 钢琴曲"," 山明水秀"," 马兰花开"};
Image[]image2 = null;
try{
Image icon = Image.createImage("/51.png");
image2 = new Image[]{
icon,
icon,
icon,
icon
};
}catch (java.io.IOException err) {}
tList=new List(" 五虎棋", Choice.IMPLICIT, string3, image2);
tList.addCommand(kaiqi);
tList.addCommand(kback);
tList.setCommandListener(this);
String[] string4={" 复古蓝"," 紫色"," 深蓝"," 淡绿色"};
Image[]image3 = null;
try{
Image icon = Image.createImage("/52.png");
image3 = new Image[]{
icon,
icon,
icon,
icon
};
}catch (java.io.IOException err) {}
oList=new List(" 五虎棋", Choice.EXCLUSIVE, string4, image3);
oList.addCommand(ook);
oList.addCommand(kback);
oList.setCommandListener(this);
String[] string5={"声音开","声音关"};
wList=new List(" 五虎棋", Choice.EXCLUSIVE, string5, null);
wList.addCommand(wok);
wList.addCommand(tback);
wList.setCommandListener(this);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(form);
}
protected void showfList(){ //此方法用来显示主菜单
Display.getDisplay(this).setCurrent(fList);
}
public void commandAction(Command c, Displayable d) {
if(c==fexit){
try {
destroyApp(false);
}catch (MIDletStateChangeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
notifyDestroyed();
}
if(c==fok){ // 单击屏幕菜单按钮进入主菜单
Display.getDisplay(this).setCurrent(fList);
}
if(c==sok){ //单击主菜单的选择按钮
switch (((List)d).getSelectedIndex()) {
case 0:Display.getDisplay(this).setCurrent(new GobangCanvas(this));break;
case 1:Display.getDisplay(this).setCurrent(sList);break;
case 2:Display.getDisplay(this).setCurrent(shoum);break;
case 3:Display.getDisplay(this).setCurrent(wList);break;
}
}
if(c==tok){//单击音乐和图片的屏幕 的按钮
switch (((List)d).getSelectedIndex()) {
case 0:Display.getDisplay(this).setCurrent(tList);break;//显示音乐菜单
case 1:Display.getDisplay(this).setCurrent(oList);break;//显示图片菜单
}
}
if(c==tback){
Display.getDisplay(this).setCurrent(fList);//单击返回到主菜单
}
if(c==kaiqi){//添加声音的开启关闭程序
switch (((List)d).getSelectedIndex()) {
case 0: player.close();
player=new AudioPlay("yin0.mid","audio/midi");
player.loadResource();player.setLoop();player.play();
break;
case 1:player.close();
player=new AudioPlay("yin1.mid","audio/midi");
player.loadResource();player.setLoop();player.play();
break;
case 2:player.close();
player=new AudioPlay("yin2.mid","audio/midi");
player.loadResource();player.setLoop();player.play();
break;
case 3:player.close();
player=new AudioPlay("yin3.mid","audio/midi");
player.loadResource();player.setLoop();player.play();
break;
}
}
if(c==kback){ //声音中的返回按钮
Display.getDisplay(this).setCurrent(sList);
}
if(c==ook){ //图片中的确定按钮
switch (((List)d).getSelectedIndex()) {
case 0:I=0;red1=255;green1=0;blue1=255;red2=0;green2=255;blue2=54;Display.getDisplay(this).setCurrent(sList);break;
case 1:I=1;red1=236;green1=0;blue1=100;red2=0;green2=255;blue2=54;Display.getDisplay(this).setCurrent(sList);break;
case 2:I=2;red1=236;green1=0;blue1=100;red2=0;green2=255;blue2=54;Display.getDisplay(this).setCurrent(sList);break;
case 3:I=3;red1=237;green1=0;blue1=20;red2=20;green2=46;blue2=237;Display.getDisplay(this).setCurrent(sList);break;
}
}
if(c==wok){//声音开关的程序
switch (((List)d).getSelectedIndex()) {
case 0:player=new AudioPlay("yin0.mid","audio/midi");
player.loadResource();player.setLoop();player.play();
break;
case 1:player.close();break;
}
}
}
}
//棋子类
public class Chesses {
boolean isPlayer1;
public Chesses() {
}
public Chesses(boolean isPlayer1) {
this.isPlayer1=isPlayer1;
}
}
//游戏开始类
import java.util.Random;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class GobangCanvas extends Canvas implements CommandListener,Runnable{
AudioPlay player,player2;
private Image img1=null,img2,img3,img4,img5;//背景图片,输赢图片
private Image imgb0,imgb1,imgb2,imgb3;
private byte img;// 此变量用来决定显示输赢
private int moveX,moveY,move;//用来确定移动棋子的坐标以及用来确定移动的条件
private int show,kk=0; //值为0
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示没有构成吃条件,值为1表示人,值为2表示电脑,kk表示一种特殊情况下的执行
private byte[][] qz; //来存储人下值为:1 电脑下值为:2 下棋过程中被记录的值为:3 被吃掉的位置值为:0
private byte[][] cha;
private byte fzhi=1; //将数组qz进行赋值的一个自变量
private byte game=0,comgame=0; //此变量用来决定是执行gameplay;movechess;eatchess;
private static final byte comgameplay=0;//电脑游戏的初始状态
private static final byte commovechess=1;//电脑游戏中移动棋子时条件变量
private static final byte comeatchess=2; //电脑游戏中吃棋子时的条件变量
private static final byte comsetchess=3; //电脑如果没有下满棋盘,构成吃棋条件
private static final byte comTest=4;
private static final byte gameplay=0;//人游戏的初始状态
private static final byte movechess=1;//人游戏中移动棋子时条件变量
private static final byte eatchess=2; //人游戏中吃棋子时的条件变量
private static final byte setchess=3; //人如果没有下满棋盘,构成吃棋条件
private static int setx=-1,sety=-1,first=1;//first表示第一步怎么走棋,
protected Gameplay gg; //传给电脑的参数。因为manqi()方法是不能用在电脑的判断上的
protected int empty;//游戏界面到屏幕边缘的留空 //当满棋以后首先clear(),这时棋盘上照样有空位值
protected int canvasW,canvasH;//画布的长和宽
protected int chessLength;//棋子的直径
protected int chessMapLength,chessMapGrid,chessGridLength;
//棋盘的边长,棋盘一边格子数,每格宽度
protected int chessMapX,chessMapY;//棋盘左上角x,y坐标
protected int selectedX,selectedY;//选择框在棋盘格局上的x,y位置
protected boolean isPlayer1,a;//是否是玩家1
protected Chesses[][] chesses;//棋子数组
protected boolean newGame;//是否是新的游戏
protected Command exitCmd;
protected Command restartCmd;
protected Command computer;
protected Command man;
public GobangCanvas(){
}
public GobangCanvas(Gameplay gg){a=true;
this.gg=gg;
player=new AudioPlay("t1.mid","audio/midi");
player2=new AudioPlay("一生离不开的是你.mid","audio/midi");
try{
imgb0=Image.createImage("/000.png");// 背景000
imgb1=Image.createImage("/111.png");// 背景111
imgb2=Image.createImage("/222.png");//背景222
imgb3=Image.createImage("/333.png");//背景333
img2=Image.createImage("/2.png");//输
img3=Image.createImage("/3.png");//赢
img4 = Image.createImage("/4.png"); //黑棋子
img5 = Image.createImage("/5.png"); //白旗子
}catch(java.io.IOException e){System.out.println("图片有问题");
}
exitCmd = new Command("返回", Command.EXIT, 0);
computer=new Command("后手",Command.OK,0);
man=new Command("先手",Command.OK,0);
addCommand(exitCmd);
addCommand(computer);
addCommand(man);
setCommandListener(this);
qz=new byte[5][5];
cha=new byte[5][5];
newGame=true;
empty=22;
canvasW=getWidth()-empty;canvasH=getHeight()-empty;
chessMapGrid=4;
chesses=new Chesses[chessMapGrid+1][chessMapGrid+1];
if(canvasW>canvasH){
chessMapLength=canvasH-canvasH%chessMapGrid;
chessMapX=(canvasW-chessMapLength)/2+empty/2;
chessMapY=(canvasH%chessMapGrid)/2+empty/2;
}
else{
chessMapLength=canvasW-canvasW%chessMapGrid;
chessMapX=(canvasW%chessMapGrid)/2+empty/2;
chessMapY=(canvasH-chessMapLength)/2+empty/2;
}
chessGridLength=chessMapLength/chessMapGrid;
chessLength=chessGridLength-1;
selectedX=selectedY=chessMapGrid/2;
isPlayer1=true;a=true;
}
private void init(){
if(newGame){ kk=0;
chesses=new Chesses[chessMapGrid+1][chessMapGrid+1];
isPlayer1=true;
selectedX=selectedY=chessMapGrid/2;
a=true;show=0;first=0;img=0;
game=gameplay;comgame=gameplay;
move=0; qz=new byte[5][5];cha=new byte[5][5];
player=new AudioPlay("t1.mid","audio/midi");
player2.close();
player2=new AudioPlay("一生离不开的是你.mid","audio/midi");
}
}
protected void paint(Graphics g) {
if(gg.I==0)g.drawImage(imgb0, 0,0, Graphics.TOP|Graphics.LEFT);
if(gg.I==1)g.drawImage(imgb1, 0,0, Graphics.TOP|Graphics.LEFT);
if(gg.I==2)g.drawImage(imgb2, 0,0, Graphics.TOP|Graphics.LEFT);
if(gg.I==3)g.drawImage(imgb3, 0,0, Graphics.TOP|Graphics.LEFT);
paintMap(g);
paintSelected(g);
paintChesses(g);
if(show!=0) paintShow(g);
if(img==2){g.drawImage(img2,chessGridLength+5,chessGridLength+5,Graphics.TOP|Graphics.LEFT );}
if(img==3){g.drawImage(img3,3*chessGridLength/2-2,chessGridLength+5,Graphics.TOP|Graphics.LEFT );}
}
protected void paintMap(Graphics g){ //画棋盘
for(int i=0;i
=0&&qz[i-1][j]==1){qz[i-1][j]=0;if(!eatT(i,j,1)) {qz[i][j]=0;qz[i-1][j]=3;cha[i-1][j]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i-1][j]=1;}
if(j+1<0&&qz[i][j+1]==1){qz[i][j+1]=0;if(!eatT(i,j,1)) {qz[i][j]=0;qz[i][j+1]=3;cha[i][j+1]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i][j+1]=1;}
if(j-1>=0&&qz[i][j-1]==1){qz[i][j-1]=0;if(!eatT(i,j,1)) {qz[i][j]=0;qz[i][j-1]=3;cha[i][j-1]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i][j-1]=1;}
qz[i][j]=0;
}
else qz[i][j]=0;
}
}
//
if(z!=6) for(i=0;i<5;i++) //第二种注释棋子的方法:构成自己可能成立的棋子
//
for(j=0;j<5;j++)
//
if(qz[i][j]==1){
//
qz[i][j]=2;
//
if(eatT(i,j,2)){
//
if(i+1<5&&qz[i+1][j]==2) {qz[i+1][j]=0;if(eatT(i,j,2)){qz[i][j]=3;cha[i][j]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i+1][j]=2;}
//
if(i-1>=0&&qz[i-1][j]==2) {qz[i-1][j]=0;if(eatT(i,j,2)){qz[i][j]=3;cha[i][j]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i+1][j]=2;}
//
if(j-1>=0&&qz[i][j-1]==2) {qz[i][j-1]=0;if(eatT(i,j,2)){qz[i][j]=3;cha[i][j]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i+1][j]=2;}
//
if(j+1<5&&qz[i][j+1]==2){ qz[i][j+1]=0;if(eatT(i,j,2)){qz[i][j]=3;cha[i][j]=1;comgame=comgameplay;a=!a;repaint();i=j=z=6;break;}else qz[i+1][j]=2;}
//
qz[i][j]=1;
//
}
//
else qz[i][j]=1;
//
}
if(z!=6){ //第3种注释棋子的方法,抢占最优点
if(qz[2][0]==1){qz[2][0]=3;z=6;cha[2][0]=1;comgame=comgameplay;a=!a;repaint();}
else if(qz[0][2]==1){qz[0][2]=3;cha[0][2]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[2][4]==1){qz[2][4]=3;z=6;cha[2][4]=1;comgame=comgameplay;a=!a;repaint();}
else if(qz[4][2]==1){qz[4][2]=3;z=6;cha[4][2]=1;comgame=comgameplay;a=!a;repaint();}
else if(qz[1][1]==1){qz[1][1]=3;cha[1][1]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[3][1]==1){qz[3][1]=3;cha[3][1]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[3][3]==1){qz[3][3]=3;cha[3][3]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[1][3]==1){qz[1][3]=3;cha[1][3]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[2][2]==1){qz[2][2]=3;cha[2][2]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[1][2]==1){qz[1][2]=3;cha[1][2]=1;z=6;comgame=comgameplay;a=!a;repaint();}
else if(qz[3][2]==1){qz[3][2]=3;cha[3][2]=1;z=6;comgame=comgameplay;a=!a;repaint();}
}
if(z!=6){Random random = new Random();//第4种注释棋子的方法,随机
while(true){int x, y;
x =(Math.abs(random.nextInt() % 5));
y =(Math.abs(random.nextInt() % 5));
if(qz[x][y]==1){qz[x][y]=3;cha[x][y]=1;a=!a;repaint(); comgame=comgameplay; break;} //添加算法
}
}
}
public void comeatchess(){ // 电脑吃棋子的方法
int z=0,i,j;
for( i=0;i<5;i++) //第一种吃棋子方法:人移动可能构成吃子
for( j=0;j<5;j++){
if(qz[i][j]==0){
qz[i][j]=1;
if(eatT(i,j,1)) {
if(i+1<5&&qz[i+1][j]==1){qz[i+1][j]=0;if(eatT(i,j,1)) {qz[i][j]=0;chesses[i+1][j]=null;comgame=commovechess;a=!a;repaint();i=j=z=6;show=0;break;}else qz[i+1][j]=1;}
if(i-1>=0&&qz[i-1][j]==1){qz[i-1][j]=0;if(eatT(i,j,1)) {qz[i][j]=0;chesses[i-1][j]=null;comgame=commovechess;a=!a;repaint();i=j=z=6;show=0;break;}else qz[i-1][j]=1;}
if(j+1<5&&qz[i][j+1]==1){qz[i][j+1]=0;if(eatT(i,j,1)) {qz[i][j]=0;chesses[i][j+1]=null;comgame=commovechess;a=!a;repaint();i=j=z=6;show=0;break;}else qz[i][j+1]=1;}
if(j-1>=0&&qz[i][j-1]==1){qz[i][j-1]=0;if(eatT(i,j,1)) {qz[i][j]=0;chesses[i][j-1]=null;comgame=commovechess;a=!a;repaint();i=j=z=6;show=0;break;}else qz[i][j-1]=1;}
qz[i][j]=0;
}
else qz[i][j]=0;
}
}
if(z!=6){ //第2种吃棋子的方法,抢占最优点
if(qz[2][0]==1){chesses[2][0]=null;qz[2][0]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[0][2]==1){chesses[0][2]=null;qz[0][2]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[2][4]==1){chesses[2][4]=null;qz[2][4]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[4][2]==1){chesses[4][2]=null;qz[4][2]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[1][1]==1){chesses[1][1]=null;qz[1][1]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[3][1]==1){chesses[3][1]=null;qz[3][1]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[3][3]==1){chesses[3][3]=null;qz[3][3]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[1][3]==1){chesses[1][3]=null;qz[1][3]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[2][2]==1){chesses[2][2]=null;qz[2][2]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[1][2]==1){chesses[1][2]=null;qz[1][2]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
else if(qz[3][2]==1){chesses[3][2]=null;qz[3][2]=0;z=6;comgame=commovechess;show=0;a=!a;repaint();}
}
if(z!=6){Random random = new Random();//第3种吃棋子的方法,随机
while(true){int x, y;
x =(Math.abs(random.nextInt() % 5));
y =(Math.abs(random.nextInt() % 5));
if(qz[x][y]==1){chesses[x][y]=null;qz[x][y]=0;a=!a;show=0;repaint(); comgame=commovechess; break;} //添加算法
}
}
}
public void commovechess(){ //电脑移动棋子的方法
int z=0;
for(int i=0;i<5;i++) //移动棋子的第一种方法,主动进攻
for(int j=0;j<5;j++){
if(qz[i][j]==0){
qz[i][j]=2;
if(eatT(i,j,2)) {
if(i+1<5&&qz[i+1][j]==2){qz[i+1][j]=0;if(eatT(i,j,2))
{chesses[i+1][j]=null;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}else qz[i+1][j]=2;}
if(i-1>=0&&qz[i-1][j]==2){qz[i-1][j]=0;if(eatT(i,j,2))
{chesses[i-1][j]=null;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}else qz[i-1][j]=2;}
if(j+1<5&&qz[i][j+1]==2){qz[i][j+1]=0;if(eatT(i,j,2))
{chesses[i][j+1]=null;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}else qz[i][j+1]=2;}
if(j-1>=0&&qz[i][j-1]==2){qz[i][j-1]=0;if(eatT(i,j,2))
{chesses[i][j-1]=null;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}else qz[i][j-1]=2;}
qz[i][j]=0;
}
else qz[i][j]=0;
}
}
if(z!=6) for(int i=0;i<5;i++) //移动棋子的第2种方法:阻止人构成吃子
for(int j=0;j<5;j++){
if(qz[i][j]==0){
qz[i][j]=1;
if(eatT(i,j,1)){
if(i+1<5&&qz[i+1][j]==2){chesses[i+1][j]=null;qz[i+1][j]=0;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}
if(i-1>=0&&qz[i-1][j]==2){chesses[i-1][j]=null;qz[i-1][j]=0;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}
if(j-1>=0&&qz[i][j-1]==2){chesses[i][j-1]=null;qz[i][j-1]=0;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}
if(j+1<5&&qz[i][j+1]==2){chesses[i][j+1]=null;qz[i][j+1]=0;chesses[i][j]=new Chesses(this.isPlayer1);qz[i][j]=2;setx=i;sety=j;repaint();i=j=z=6;break;}
qz[i][j]=0;
}
else qz[i][j]=0;
}
}
if(z!=6)for(int i=0;i<5;i++) //移动棋子的第3种方法,循环使用一种成立条件
for(int j=0;j<5;j++){
if(qz[i][j]==2&&eatT(i,j,2)){
if(i+1<5&&qz[i+1][j]==0){qz[i][j]=0;chesses[i][j]=null;chesses[i+1][j]=new Chesses(this.isPlayer1);qz[i+1][j]=2;setx=i+1;sety=j;repaint();i=j=z=6;break;}
if(i-1>=0&&qz[i-1][j]==0){qz[i][j]=0;chesses[i][j]=null;chesses[i-1][j]=new Chesses(this.isPlayer1);qz[i-1][j]=2;setx=i-1;sety=j;repaint();i=j=z=6;break;}
if(j+1<5&&qz[i][j+1]==0){qz[i][j]=0;chesses[i][j]=null;chesses[i][j+1]=new Chesses(this.isPlayer1);qz[i][j+1]=2;setx=i;sety=j+1;repaint();i=j=z=6;break;}
if(j-1>=0&&qz[i][j-1]==0){qz[i][j]=0;chesses[i][j]=null;chesses[i][j-1]=new Chesses(this.isPlayer1);qz[i][j-1]=2;setx=i;sety=j-1;repaint();i=j=z=6;break;}
}
}
if(z!=6){Random random = new Random();//第4种移动棋子的方法,随机
while(true){int x, y;
x =(Math.abs(random.nextInt() % 5));
y =(Math.abs(random.nextInt() % 5));
if(qz[x][y]==2){if(x+1<5&&qz[x+1][y]==0) {chesses[x][y]=null;qz[x][y]=0;chesses[x+1][y]=new Chesses(this.isPlayer1);setx=x+1;sety=y;qz[x+1][y]=2;break;}} //添加算法
if(qz[x][y]==2){if(x-1>=0&&qz[x-1][y]==0) {chesses[x][y]=null;qz[x][y]=0;chesses[x-1][y]=new Chesses(this.isPlayer1);setx=x-1;sety=y;qz[x-1][y]=2;break;}} //添加算法
if(qz[x][y]==2){if(y+1<5&&qz[x][y+1]==0) {chesses[x][y]=null;qz[x][y]=0;chesses[x][y+1]=new Chesses(this.isPlayer1);setx=x;sety=y+1;qz[x][y+1]=2;break;}} //添加算法
if(qz[x][y]==2){if(y-1>=0&&qz[x][y-1]==0) {chesses[x][y]=null;qz[x][y]=0;chesses[x][y-1]=new Chesses(this.isPlayer1);setx=x;sety=y-1;qz[x][y-1]=2;break;}} //添加算法
}
}
}
public boolean setN(){ //这个
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
:棋盘下满,但下棋中没有任何一方吃子
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
if(qz[i][j]==3) return false;
return true;
}
public boolean manqi(){ //人判断棋子下满的成立条件
for(int i=0;i<=chessMapGrid;i++)
{
for(int j=0;j<=chessMapGrid;j++)
{
if(chesses[i][j]==null)
return false;
}
}
return true;
}
public boolean win(int w){ //该方法用来判断最后输赢
int p=0,i=0,j=0;
for( i=0;i<5;i++) //此条件判断对方是否有两个棋子就算输
for( j=0;j<5;j++)
if(qz[i][j]==w) p++;
if(p<3) return true;
return false;
}
public boolean teshu(int w){ // 此条件判断如果对方棋子不能动为真,所要执行的方法条件
int i,j;
for( i=0;i<5;i++)
for( j=0;j<5;j++)
if(qz[i][j]==w){
if(i+1<5&&qz[i+1][j]==0) return false;
if(i-1>=0&&qz[i-1][j]==0) return false;
if(j+1<5&&qz[i][j+1]==0) return false;
if(j-1>=0&&qz[i][j-1]==0) return false;
}
if(i==5) return true;
return false;
}
public void movechesses(){ //移动棋子的方法
if(chesses[selectedX][selectedY]==null){ //移动条件成立
chesses[moveX][moveY]=null; qz[moveX][moveY]=0;//将人下还是电脑的,清空
chesses[selectedX][selectedY]=new Chesses(this.isPlayer1);//移动后的棋子位置
qz[selectedX][selectedY]=1;a=!a;move=0;
if(eatT(selectedX,selectedY,1)){game=eatchess;move=0;a=!a;show=1;player.loadResource();player.play();}
repaint();//移动一次,电脑移动,如果构成了吃的条件则还是该人动
}else move=0;
}
public void clear(){ // 清除棋盘上记录的棋子方法
for(int i=0;i
本文档为【五虎棋软件源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。