五子棋小游戏的实现

实验标题

五子棋小游戏的实现

一、实验目的

    掌握以Java为核心的应用软件开发,用学过的Java为基础的面向对象编程技术的理论知识,设计出一个五子棋开发的小项目作为网络编程学科的期末考察大作业。

二、实验环境

开发环境:Eclipse  运行环境:Windows10系统

开发平台:Java

三、实验内容

用java面向对象的基础知识设计五子棋小游戏:

  1. 用二维数组的知识的嵌套勾画出五子棋小游戏的棋盘;
  2. 用"╋"作为棋盘的构造;"●"和"○"作为黑白棋子;
  3. 黑白子:用boolean布尔知识--立flag用以判断黑白子;
  4. While循环达到两子交互落子的过程;
  5. 落子:设置x,y坐标作为落子点;
  6. 应用构造方法判断输赢。

问题分析

一、棋盘的构造?

二、棋盘的打印?

三、如何落子?

四:如何判断五子棋的输赢?

、实验步骤(包含运行结果)

 定义长度:

int len = 20;

五子棋容器:

String[][] goBang = new String[len][len];

用特殊符号定义坐标数组:

String[]nums={"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"};

特殊符号定义棋盘符号:

String add = "╋";

String black = "●";

String white = "○";

构造棋盘:

for (int i = 0; i < goBang.length; i++) {

for (int j = 0; j < goBang[i].length; j++) {

if(j == len-1){//每行的最后一列 -- 设置行数

goBang[i][j] = nums[i];

}else if(i == len-1){//最后一行 -- 设置列数

goBang[i][j] = nums[j];

}else{

goBang[i][j] = add;

}

}

}

for (String[] ss : goBang) {

for (String element : ss) {

System.out.print(element);

}

System.out.println();

}

判断输赢:

boolean winOrLose = winOrLose(goBang, x, y, piece);

 

if(winOrLose){

System.out.println(((flag)?"黑":"白") + "棋获得胜利");

bool = false;

}

}

scan.close();

}

交互落子:

 

判断输赢的方法:

public static boolean winOrLose(String[][] goBang,int x,int y,String piece){

int num = up(goBang, x, y, piece) + down(goBang, x, y, piece) + 1;

if(num >= 5){

return true;

}

num = left(goBang, x, y, piece) + right(goBang, x, y, piece) + 1;

if(num >= 5){

return true;

}

num = rightUp(goBang, x, y, piece) + leftDown(goBang, x, y, piece) + 1;

if(num >= 5){

return true;

}

num = rightDown(goBang, x, y, piece) + leftUp(goBang, x, y, piece) + 1;

if(num >= 5){

return true;

}

return false;

}

public static int up(String[][] goBang,int x,int y,String piece){

int count = 0;

while(x>0){

x--;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int down(String[][] goBang,int x,int y,String piece){

int count = 0;

while(x<18){

x++;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int left(String[][] goBang,int x,int y,String piece){

int count = 0;

while(y>0){

y--;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int right(String[][] goBang,int x,int y,String piece){

int count = 0;

while(y<18){

y++;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int rightUp(String[][] goBang,int x,int y,String piece){

int count = 0;

while(y<18&&x>0){

x--;

y++;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int rightDown(String[][] goBang,int x,int y,String piece){

int count = 0;

while(y<18&&x<18){

x++;

y++;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int leftUp(String[][] goBang,int x,int y,String piece){

int count = 0;

while(y>0&&x>0){

x--;

y--;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

public static int leftDown(String[][] goBang,int x,int y,String piece){

int count = 0;

while(y>0&&x>0){

x++;

y--;

if(goBang[x][y].equals(piece)){

count++;

}else{

break;

}

}

return count;

}

取得胜利:

 

六、实验总结

五子棋是一种非常古老和流行的策略棋类游戏,在做这次实验过程自己也遇到过不少的问题,但通过自己查略资料逐渐解决了,其实我觉得编写程序,调试,遇到问题耐心的查错,总会有解决办法的,比较困难的错误其实是能够运行之后结果不稳定,有时候对,有时候错,这样的问题往往是程序设计的算法的问题,虽然这次程序没有太复杂的算法,但是一些小的地方没有考虑到,往往会给运行结果造成很多难以解释的错误。我觉得我的程序在经过很多种情况的测试后,基本上能满足我自己的要求了,可能还有很多不完善的地方,但是确实收获了很多东西,随着以后的学习运用,估计会有更深入的认识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值