大神们 急求基于eclipse的java小游戏程序的源码,程序不要多复杂啊。像坦克大战,五子棋,扫雷之类的谢谢 10

 我来答
N顾茅庐
2016-12-19 · TA获得超过423个赞
知道小有建树答主
回答量:145
采纳率:80%
帮助的人:71.8万
展开全部

import java.util.Scanner;


public class Wuziqi {

/**

* 棋盘

*/

private final int[][] qipan;

/**

* 步数

*/

private int bushu;

/**

* 构造方法,设置棋盘规格

* @param x

* @param y

*/

public Wuziqi(int x, int y) {

if (x < 1 || y < 1) {

System.out.println("棋盘规格应不小于1,使用默认规格");

qipan = new int[9][9];

} else {

qipan = new int[y][x];

}

}

/**

* 游戏开始

*/

public void play() {

int[] zuobiao = null;

//如果游戏没有结束

while (!end(zuobiao)) {

//落子,并取得坐标

zuobiao = luozi();

//输出棋盘

out();

}

}

/**

* 输出棋盘和棋子

*/

private void out() {

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

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

if (qipan[i][j] == 0) {

System.out.print("  +");

}else if (qipan[i][j] == -1) {

System.out.print("  白");

}else if (qipan[i][j] == 1) {

System.out.print("  黑");

}

}

System.out.println(" ");

}

}

/**

* 落子

*/

private int[] luozi() {

int[] zuobiao;

bushu++;

if (bushu % 2 == 1) {

System.out.println("请黑方落子");

zuobiao = input();

qipan[zuobiao[1]][zuobiao[0]] = 1;

}else {

System.out.println("请白方落子");

zuobiao = input();

qipan[zuobiao[1]][zuobiao[0]] = -1;

}

return zuobiao;

}

/**

* 输入坐标

* @return

*/

private int[] input() {

Scanner sc = new Scanner(System.in);

System.out.println("请输入x轴坐标");

String x = sc.next();

System.out.println("请输入y轴坐标");

String y = sc.next();

//如果没有通过验证,则再次执行input(),递归算法

if (!validate(x, y)) {

return input();

}

int int_x = Integer.valueOf(x);

int int_y = Integer.valueOf(y);

return new int[] {int_x, int_y};

}

/**

* 校验数据

* @param x

* @param y

* @return

*/

private boolean validate(String x, String y) {

Integer int_x = null;

Integer int_y = null;

//异常处理的方式判断字符串是否是一个整数

try {

int_x = Integer.valueOf(x);

int_y = Integer.valueOf(y);

} catch (NumberFormatException e) {

System.out.println("坐标格式错误,坐标应为整数");

return false;

}

if (int_x < 0 || int_y < 0 || int_x >= qipan[0].length || int_y >= qipan.length) {

System.out.println("坐标越界");

return false;

}

if (qipan[int_y][int_x] == 0) {

return true;

} else {

System.out.println("坐标上已有棋子");

}

return false;

};

/**

* 结束条件

* @return

*/

private boolean end(int[] zuobiao) {

if (zuobiao == null) {

return false;

}

//计数器

//表示棋盘上经过最近落子坐标的4条线上的连续(和最近落子颜色相同的)棋子的个数

//如果某条线上连续的棋子大于等于4(加上最近落子本身,大于等于5),则游戏结束,符合五子棋规则

int[] jieguo = new int[4];

int x = zuobiao[0];

int y = zuobiao[1];

//定义八个方向

final int[][] fangxiang = {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};

//最近落子的坐标上的棋子颜色

int number = qipan[y][x];

//搜索最近落子坐标为中心最远4的距离

for (int i = 1; i <= 4; i++) {

//每次搜索不同的距离都搜索八个方向

for (int j = 0; j < fangxiang.length; j++) {

//约定如果某个方向为null时,不再搜索这个方向。关键字continue是跳过本次(一次)循环的意思

if (fangxiang[j] == null) {

continue;

}

int mubiao_x = x + i * fangxiang[j][0];

int mubiao_y = y + i * fangxiang[j][1];

//如果搜索坐标相对于棋盘越界,则不再搜索这个方向

if (mubiao_y >= qipan.length || mubiao_y < 0 || mubiao_x >= qipan[0].length || mubiao_x < 0) {

fangxiang[j] = null;

continue;

}

//如果最近落子坐标上的值等于目标坐标上的值(颜色相同),则计数器上某条线加1

//否则认为这个方向没有棋子或有别的颜色的棋子,不再搜索这个方向

if (number == qipan[mubiao_y][mubiao_x]) {

jieguo[j % 4]++;

}else {

fangxiang[j] = null;

}

}

}

//查看计数器上是否有比3更大的数(查看是否有一方胜出)

for (int i : jieguo) {

if (i > 3) {

System.out.println("游戏结束");

if (bushu % 2 == 1) {

System.out.println("黑方胜");

} else {

System.out.println("白方胜");

}

return true;

}

}

//没有胜出者的情况下,查看棋盘上是否还有空位置,如果有,则游戏可以继续

for (int[] arr : qipan) {

for (int i : arr) {

if (i == 0) {

return false;

}

}

}

//如果没有空位置,则平局

System.out.println("游戏结束,平局");

return true;

}


}

菜菜的小菜花
2016-12-19 · 小菜花的菜铺,菜菜的小菜花
菜菜的小菜花
采纳数:159 获赞数:174

向TA提问 私信TA
展开全部
这还不复杂啊。百度搜一下试试,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式