Java实现两人五子棋游戏(六) 行棋方变换

2025-05-29 0 14

之前的两篇文章:java实现两人五子棋游戏(二) 画出棋盘;java实现两人五子棋游戏(三) 画出棋子;java实现两人五子棋游戏(四) 落子动作的实现;Java实现两人五子棋游戏(五) 判断是否有一方胜出,可以点击查看。

Java实现两人五子棋游戏(六) 行棋方变换

前面我们已经画好棋盘和棋子,并可以自由落子,且可以判断棋盘中是否有五连珠。接下来的工作是,每次落子后交换行棋方(即将下一棋子颜色由白->黑或黑->白),并将胜出判断增加颜色判断条件(棋盘上存在五连珠->棋盘上存在同色的五连珠)。

Java实现两人五子棋游戏(六) 行棋方变换

主模块main.java和棋子类chessman.java不变,我们要对drawchessboard.java中的落子函数mousepressed和五连珠判断函数iswin做一下调整。

main.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
package xchen.test.simplegobang;

import java.awt.container;

import javax.swing.jframe;

import xchen.test.simplegobang.drawchessboard;

public class main extends jframe{

private drawchessboard drawchessboard;

public main() {

drawchessboard = new drawchessboard();

//frame标题

settitle("单机五子棋");

container containerpane =getcontentpane();

containerpane.add(drawchessboard);

}

public static void main(string[] args) {

main m = new main();

m.setsize(800, 800);

m.setvisible(true);

}

}

chessman.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
package xchen.test.simplegobang;

public class chessman {

private int color;//1-white,0-black

private boolean placed = false;

int matchcount = 1;

public chessman(int color,boolean placed){

this.color=color;

this.placed=placed;

}

public boolean getplaced() {

return placed;

}

public void setplaced(boolean placed) {

this.placed = placed;

}

public int getcolor() {

return color;

}

public void setcolor(int color) {

this.color = color;

}

}

第一步,修改mousepressed函数,使得每次落子后,都将行棋方让给对家(即每次落子都改变棋子颜色)

drawchessboard.java中的mousepressed函数部分,只要每次都修改chesscolor的值即可。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62
@override

//当用户按下鼠标按钮时发生

public void mousepressed(mouseevent e) {

int point_x=e.getx();

int point_y=e.gety();

int imgwidth = boardimg.getheight(this);

int imgheight = boardimg.getwidth(this);

int fwidth = getwidth();

int fheight= getheight();

int x=(fwidth-imgwidth)/2;

int y=(fheight-imgheight)/2;

int span_x=imgwidth/rows;

int span_y=imgheight/rows;

//system.out.println("press");

int status_x = 0;

int status_y = 0;

if(point_x>=x && point_x<=x+imgwidth && point_y>=y && point_y <= y+imgheight)

{

//system.out.println("合法");

for(int i=0;i<rows+1;i++)

{

if(point_x>=x-chessman_width/2+1+i*span_x)

{

if(point_x<=x+chessman_width/2-1+i*span_x)//如果是width/2会在中间点出现两个匹配值

{

//system.out.println("point x "+i+" "+point_x+" "+(x-chessman_width/2+i*span_x)+" "+(x+chessman_width/2+i*span_x));

status_x = i;

}

}

}

for(int i=0;i<rows+1;i++)

{

if(point_y>=y-chessman_width/2+1+i*span_y)

{

if(point_y <= y+chessman_width/2-1+i*span_y)

{

//system.out.println("point y "+i+" "+point_y+" "+(y-chessman_width/2+1+i*span_y)+" "+(y+chessman_width/2-1+i*span_y));

status_y = i;

}

}

}

chessman chessman = new chessman(chesscolor, true);

chessstatus[status_x][status_y]=chessman;

system.out.println("chess color:"+chesscolor);

if(chesscolor==black)

{

chesscolor = white;

}else {

chesscolor = black;

}

repaint();

if(iswin(status_x, status_y, chessstatus))

{

system.out.println("win!!!!!");

}

}

}

运行一下

Java实现两人五子棋游戏(六) 行棋方变换

第二步,将胜出判断增加颜色判断条件(棋盘上存在五连珠->棋盘上存在同色的五连珠)

在iswin函数的判断条件上,加上对chessman.getcolor的颜色判断

iswin函数代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226
boolean iswin(int point_x,int point_y,chessman[][] cm)

{

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//横向查找

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向右侧查找

for(int n=1;n<=4;n++)

{

if((i+n>=0)&&(i+n)<=rows)

{

if(chessstatus[i+n][j]!=null&&chessstatus[i+n][j].getplaced()==true&&chessstatus[i+n][j].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" right count++:"+(i+n)+" "+j+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//向左侧查找

for(int n=1;n<=4;n++)

{

if((i-n>=0)&&(i-n)<=rows)

{

if(chessstatus[i-n][j]!=null&&chessstatus[i-n][j].getplaced()==true&&chessstatus[i-n][j].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i-n)+" "+j+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i-n][j]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//纵向

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向下查找,左上角为坐标原点,y轴正方向向下

for(int n=1;n<=4;n++)

{

if((j+n>=0)&&(j+n)<=rows)

{

if(chessstatus[i][j+n]!=null&&chessstatus[i][j+n].getplaced()==true&&chessstatus[i][j+n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" up count++:"+(i)+" "+(j+n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//向上查找

for(int n=1;n<=4;n++)

{

if((j-n>=0)&&(j-n)<=rows)

{

if(chessstatus[i][j-n]!=null&&chessstatus[i][j-n].getplaced()==true&&chessstatus[i][j-n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i)+" "+(j-n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i][j-n]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

//方向:左上右下

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//左上

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向下查找,左上角为坐标原点,y轴正方向向下

for(int n=1;n<=4;n++)

{

if((j-n>=0)&&(j-n)<=rows&&(i-n)>=0&&(i-n)<=rows)

{

if(chessstatus[i-n][j-n]!=null&&chessstatus[i-n][j-n].getplaced()==true&&chessstatus[i-n][j-n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" up count++:"+(i-n)+" "+(j-n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//右下

for(int n=1;n<=4;n++)

{

if((j+n>=0)&&(j+n)<=rows&&(i+n)>=0&&(i+n)<=rows)

{

if(chessstatus[i+n][j+n]!=null&&chessstatus[i+n][j+n].getplaced()==true&&chessstatus[i+n][j+n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i+n)+" "+(j+n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i+n][j+n]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

//方向:左下右上

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//左下

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向下查找,左上角为坐标原点,y轴正方向向下

for(int n=1;n<=4;n++)

{

if((j+n>=0)&&(j+n)<=rows&&(i-n)>=0&&(i-n)<=rows)

{

if(chessstatus[i-n][j+n]!=null&&chessstatus[i-n][j+n].getplaced()==true&&chessstatus[i-n][j+n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" up count++:"+(i-n)+" "+(j+n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//右上

for(int n=1;n<=4;n++)

{

if((j-n>=0)&&(j-n)<=rows&&(i+n)>=0&&(i+n)<=rows)

{

if(chessstatus[i+n][j-n]!=null&&chessstatus[i+n][j-n].getplaced()==true&&chessstatus[i+n][j-n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i+n)+" "+(j-n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i+n][j-n]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

return false;

}

运行一下!

Java实现两人五子棋游戏(六) 行棋方变换

完整的drawchessboard.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403
package xchen.test.simplegobang;

import java.awt.color;

import java.awt.graphics;

import java.awt.graphics2d;

import java.awt.image;

import java.awt.radialgradientpaint;

import java.awt.toolkit;

import java.awt.event.mouseevent;

import java.awt.event.mouselistener;

import javax.swing.jpanel;

public class drawchessboard extends jpanel implements mouselistener{

final static int black=0;

final static int white=1;

public int chesscolor = black;

int chessman_width=30;

public image boardimg;

final private int rows = 19;

chessman[][] chessstatus=new chessman[rows+1][rows+1];

public drawchessboard() {

boardimg = toolkit.getdefaulttoolkit().getimage("res/drawable/chessboard2.png");

if(boardimg == null)

system.err.println("png do not exist");

addmouselistener(this);

}

@override

protected void paintcomponent(graphics g) {

// todo auto-generated method stub

super.paintcomponent(g);

int imgwidth = boardimg.getheight(this);

int imgheight = boardimg.getwidth(this);

int fwidth = getwidth();

int fheight= getheight();

int x=(fwidth-imgwidth)/2;

int y=(fheight-imgheight)/2;

int span_x=imgwidth/rows;

int span_y=imgheight/rows;

g.drawimage(boardimg, x, y, null);

//画横线

for(int i=0;i<rows;i++)

{

g.drawline(x, y+i*span_y, fwidth-x,y+i*span_y);

}

//画竖线

for(int i=0;i<rows;i++)

{

g.drawline(x+i*span_x, y, x+i*span_x,fheight-y);

}

//画棋子

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

//system.out.println("draw chessman "+i+" "+j);

int pos_x=x+i*span_x;

int pos_y=y+j*span_y;

float radius_b=40;

float radius_w=80;

float[] fractions = new float[]{0f,1f};

java.awt.color[] colors_b = new java.awt.color[]{color.black,color.white};

color[] colors_w = new color[]{color.white,color.black};

radialgradientpaint paint;

if(chessstatus[i][j].getcolor()==1)

{

//system.out.println("draw white chess");

paint = new radialgradientpaint(pos_x-chessman_width/2f, pos_y-chessman_width/2f, radius_w*2, fractions, colors_w);

}else{

//system.out.println("draw black chess");

paint = new radialgradientpaint(pos_x-chessman_width/2f, pos_y-chessman_width/2f, radius_b*2, fractions, colors_b);

}

((graphics2d)g).setpaint(paint);

((graphics2d)g).filloval(pos_x-chessman_width/2,pos_y-chessman_width/2,chessman_width,chessman_width);

}

}

}

}

@override

//当用户按下鼠标按钮时发生

public void mousepressed(mouseevent e) {

int point_x=e.getx();

int point_y=e.gety();

int imgwidth = boardimg.getheight(this);

int imgheight = boardimg.getwidth(this);

int fwidth = getwidth();

int fheight= getheight();

int x=(fwidth-imgwidth)/2;

int y=(fheight-imgheight)/2;

int span_x=imgwidth/rows;

int span_y=imgheight/rows;

//system.out.println("press");

int status_x = 0;

int status_y = 0;

if(point_x>=x && point_x<=x+imgwidth && point_y>=y && point_y <= y+imgheight)

{

//system.out.println("合法");

for(int i=0;i<rows+1;i++)

{

if(point_x>=x-chessman_width/2+1+i*span_x)

{

if(point_x<=x+chessman_width/2-1+i*span_x)//如果是width/2会在中间点出现两个匹配值

{

//system.out.println("point x "+i+" "+point_x+" "+(x-chessman_width/2+i*span_x)+" "+(x+chessman_width/2+i*span_x));

status_x = i;

}

}

}

for(int i=0;i<rows+1;i++)

{

if(point_y>=y-chessman_width/2+1+i*span_y)

{

if(point_y <= y+chessman_width/2-1+i*span_y)

{

//system.out.println("point y "+i+" "+point_y+" "+(y-chessman_width/2+1+i*span_y)+" "+(y+chessman_width/2-1+i*span_y));

status_y = i;

}

}

}

if(chessstatus[status_x][status_y]==null||chessstatus[status_x][status_y].getplaced()==false)

{

chessman chessman = new chessman(chesscolor, true);

chessstatus[status_x][status_y]=chessman;

system.out.println("chess color:"+chesscolor);

if(chesscolor==black)

{

chesscolor = white;

}else {

chesscolor = black;

}

repaint();

if(iswin(status_x, status_y, chessstatus))

{

system.out.println("win!!!!!");

}

}

}

}

@override

//当用户按下并松开鼠标按钮时发生

public void mouseclicked(mouseevent e) {

// todo auto-generated method stub

}

@override

public void mousereleased(mouseevent e) {

// todo auto-generated method stub

}

@override

public void mouseentered(mouseevent e) {

// todo auto-generated method stub

}

@override

public void mouseexited(mouseevent e) {

// todo auto-generated method stub

}

boolean iswin(int point_x,int point_y,chessman[][] cm)

{

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//横向查找

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向右侧查找

for(int n=1;n<=4;n++)

{

if((i+n>=0)&&(i+n)<=rows)

{

if(chessstatus[i+n][j]!=null&&chessstatus[i+n][j].getplaced()==true&&chessstatus[i+n][j].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" right count++:"+(i+n)+" "+j+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//向左侧查找

for(int n=1;n<=4;n++)

{

if((i-n>=0)&&(i-n)<=rows)

{

if(chessstatus[i-n][j]!=null&&chessstatus[i-n][j].getplaced()==true&&chessstatus[i-n][j].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i-n)+" "+j+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i-n][j]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//纵向

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向下查找,左上角为坐标原点,y轴正方向向下

for(int n=1;n<=4;n++)

{

if((j+n>=0)&&(j+n)<=rows)

{

if(chessstatus[i][j+n]!=null&&chessstatus[i][j+n].getplaced()==true&&chessstatus[i][j+n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" up count++:"+(i)+" "+(j+n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//向上查找

for(int n=1;n<=4;n++)

{

if((j-n>=0)&&(j-n)<=rows)

{

if(chessstatus[i][j-n]!=null&&chessstatus[i][j-n].getplaced()==true&&chessstatus[i][j-n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i)+" "+(j-n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i][j-n]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

//方向:左上右下

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//左上

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向下查找,左上角为坐标原点,y轴正方向向下

for(int n=1;n<=4;n++)

{

if((j-n>=0)&&(j-n)<=rows&&(i-n)>=0&&(i-n)<=rows)

{

if(chessstatus[i-n][j-n]!=null&&chessstatus[i-n][j-n].getplaced()==true&&chessstatus[i-n][j-n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" up count++:"+(i-n)+" "+(j-n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//右下

for(int n=1;n<=4;n++)

{

if((j+n>=0)&&(j+n)<=rows&&(i+n)>=0&&(i+n)<=rows)

{

if(chessstatus[i+n][j+n]!=null&&chessstatus[i+n][j+n].getplaced()==true&&chessstatus[i+n][j+n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i+n)+" "+(j+n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i+n][j+n]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

//方向:左下右上

for(int i=0;i<rows+1;i++)

{

for(int j=0;j<rows+1;j++)

{

//左下

if(chessstatus[i][j]!=null&&chessstatus[i][j].getplaced()==true)

{

int matchcolor = chessstatus[i][j].getcolor();

//向下查找,左上角为坐标原点,y轴正方向向下

for(int n=1;n<=4;n++)

{

if((j+n>=0)&&(j+n)<=rows&&(i-n)>=0&&(i-n)<=rows)

{

if(chessstatus[i-n][j+n]!=null&&chessstatus[i-n][j+n].getplaced()==true&&chessstatus[i-n][j+n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" up count++:"+(i-n)+" "+(j+n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

break;

}

}

}

//右上

for(int n=1;n<=4;n++)

{

if((j-n>=0)&&(j-n)<=rows&&(i+n)>=0&&(i+n)<=rows)

{

if(chessstatus[i+n][j-n]!=null&&chessstatus[i+n][j-n].getplaced()==true&&chessstatus[i+n][j-n].getcolor()==matchcolor)

{

chessstatus[i][j].matchcount++;

system.out.println("pos:"+i+" "+j+" "+"left count++:"+(i+n)+" "+(j-n)+" count:"+chessstatus[i][j].matchcount);

if(chessstatus[i][j].matchcount==5)

{

return true;

}

}else

{

if(chessstatus[i+n][j-n]!=null)

{

chessstatus[i][j].matchcount = 1;

}

break;

}

}

}

chessstatus[i][j].matchcount=1;//refresh count

}

}

}

return false;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:https://blog.csdn.net/v_xchen_v/article/details/53447709

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java实现两人五子棋游戏(六) 行棋方变换 https://www.kuaiidc.com/112280.html

相关文章

发表评论
暂无评论