经过16天的java学习,也学得了不少关于Java方面的知识,我想分享一下我用java写的一个简单的五子棋。

游戏规则:

(1)对局双方各执一色棋子。
(2)空棋盘开局。
(3)白先、黑后,交替下子,每次只能下一子。
(4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。
(5)白方的第一枚棋子可下在棋盘任意交叉点上。
(6)任意一方达成五连子即可获胜

整体如下:

import java.util.Scanner;
public class WuZiQi2 {
static String[][] a = new String[10][10]; public static void main(String[] args) {
init();
paint();
XiaZi();
}
public static void init() {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.println(a[i][j]);
a[i][j] = "+";
}
}
}
public static void paint() {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[/**/i][j] + "" + "\t");
}
System.out.println();
}
}
public static void XiaZi() {
boolean flag = true;
Scanner s = new Scanner(System.in);
int x = 0;
int y = 0;
while (true) {
if (flag) {
System.out.println("A下");
System.out.println("请输入x坐标");
x = s.nextInt();
System.out.println("请输入y坐标");
y = s.nextInt();
if (x > 10 || y > 10 || x < 1 || y < 1) {
System.out.println("请输入正确的xy坐标");
continue;
}
if (isRepeat(x, y)) {
a[y - 1][x - 1] = "○";
paint();
} else {
continue;
}
} else {
System.out.println("B下");
System.out.println("请输入x坐标");
x = s.nextInt();
System.out.println("请输入y坐标");
y = s.nextInt();
if (x > 10 || y > 10 || x < 1 || y < 1) {
System.out.println("请输入正确的xy坐标");
continue;
}
if (isRepeat(x, y)) {
a[y - 1][x - 1] = "●";
paint();
} else {
continue;
}
}
flag = !flag;
boolean l = upDown(x - 1, y - 1, a[y - 1][x - 1]);
if (l) {
break;
}
boolean p = leftRight(x - 1, y - 1, a[y - 1][x - 1]);
if (p) {
break;
}
boolean o = lurd(x - 1, y - 1, a[y - 1][x - 1]);
if (o) {
break;
}
boolean f = ruld(x - 1, y - 1, a[y - 1][x - 1]);
if (f){
break;
}
}
}
public static boolean isRepeat(int x, int y) {
if (!a[y - 1][x - 1].equals("○") && !a[y - 1][x - 1].equals("●")) {
return true;
}
return false;
} public static boolean upDown(int x, int y, String s) {//上下 int count = 1;
int i = x;
int k = y - 1;
for (; k >= 0; k--) {
if (a[k][i].equals(s)) {
count++;
}else{
break;
}
}
int j = y + 1;
for (; j <= 9; j++) {
if (a[j][i].equals(s)) {
count++;
}else{
break;
}
}
if (count >= 5) {
System.out.println(s + "Win");
return true;
}
return false;
}
public static boolean leftRight(int x, int y, String s) {//左右
int count = 1;
int i = x - 1;
int k = y;
for (; i >= 0; i--) {
if (a[k][i].equals(s)) {
count++;
}else{
break;
}
}
int j = x + 1;
for (; j <= 9; j++) {
if (a[k][j].equals(s)) {
count++;
}else{
break;
}
}
if (count >= 5) {
System.out.println(s + "Win");
return true;
}
return false;
}
public static boolean lurd(int x, int y, String s) {//左上右下
int count = 1;
int i = x - 1;
int k = y - 1;
for (; i >= 0 & k >= 0; i--, k--) {
if (a[k][i].equals(s)) {
count++;
}else{
break;
}
}
int n = x + 1;
int m = y + 1;
for (; n <= 9 & m <= 9; n++, m++) {
if (a[m][n].equals(s)) {
count++;
}else{
break;
}
}
if (count >= 5) {
System.out.println(s + "Win");
return true;
}
return false;
}
public static boolean ruld(int x, int y,String s){//右上左下
int count = 1;
int q = x + 1;
int e = y - 1;
for (;q<=9&e>=0;q++,e--){
if (a[e][q].equals(s)){
count++;
}else{
break;
}
}
int r = x - 1;
int t = y + 1;
for (;r>=0&t<=9;r--,t++){
if (a[t][r].equals(s)){
count++;
}else{
break;
}
}
if (count>=5) {
System.out.println(s+"Win");
return true;
}
return false;
}
}

java语言写一个建议的五子棋的更多相关文章

  1. 用java语言写一个简易版本的登录页面,包含用户注册、用户登录、用户注销、修改密码等功能

    package com.Summer_0421.cn; import java.util.Arrays; import java.util.Scanner; /** * @author Summer ...

  2. 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)

    使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置jdk-15.0.1-免配置路径版提取码:earu免安装版 ...

  3. 教你如何使用Java手写一个基于链表的队列

    在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...

  4. 用C语言写一个“事件”的模拟程序

    源:用C语言写一个“事件”的模拟程序 Example.c //定义一个函数指针 func int (*func) (void); //调用该函数相当于触发了事件. //该事件触发后,会检查函数指针fu ...

  5. java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多

    java nio 写一个完整的http服务器  支持文件上传   chunk传输    gzip 压缩      也仿照着 netty处理了NIO的空轮询BUG        本项目并不复杂 代码不多 ...

  6. 只用120行Java代码写一个自己的区块链-3挖矿算法

    在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...

  7. 用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

  8. 只用120行Java代码写一个自己的区块链

    区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...

  9. 用java代码写一个简单的网上购物车程序

    需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法. 3.写一个购物车类,有添加商品方法.查看订单信息,删除商品,修 ...

随机推荐

  1. .net 开源模板引擎jntemplate 实战演习:基础篇之入门

    一.简介 模板引擎是Web开发中非常重要的一环,它负责将页面上的动态内容呈现出最终的结果展现给前端用户,在asp.net mvc中,我们最熟悉的就是Razor了,作为官方的视图引擎(视图引擎不等同于模 ...

  2. Spring-06 AOP

    Spring-06 AOP AOP 1.简介 AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AO ...

  3. POJ-2031(最小生成树+kruskal)

    Building a Space Station POJ-2031 注意,这里的输出需要是%f型而不是%lf型的,否则wa. #include<iostream> #include< ...

  4. 【Arduino学习笔记04】消抖动的按键切换

    "开关抖动": 由于按键是基于弹簧-阻尼系统的机械部件,所以当按下一个按键时,读到的信号并不是从低到高,而是在高低电平之间跳动几毫秒之后才最终稳定. 代码解读: 1 const i ...

  5. strick-footer 粘边布局

    当网页缩小, 缩放到一定高度时(这个高度就是页面内容高度)footer的页尾自动消失,这个就叫做粘边布局 strick-footer 粘边布局基本思路: 主体{ height:100%; } 内容体{ ...

  6. mysql查询较长的执行进程及创建权限账号

    A:对于死锁,进程的操作 1.查找当前活跃事务 SELECT * from information_schema.INNODB_TRX 根据trx_started等判断事务是否异常锁定 2.杀死线程 ...

  7. Linux给防火墙开外网端口

    /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 80:外网端口

  8. CF1149C Tree Generator™

    一.题目 点此看题 二.解法 话说老师给的课件是错的啊,把我坑了好久,我手玩样例才玩出来,最后只能去看洛谷题解了. 本题是树是用一个括号序列给出的,你要知道的是:( 代表递归下去到一个新节点,) 表示 ...

  9. 总结数据科学家常用的Python库

    概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...

  10. Python中树的遍历-堆排序

    1.二叉树的遍历 遍历:迭代所有元素一遍. 树的遍历:对树中所有的元素不重复的访问一遍,也成扫描 广度优先遍历:层序遍历 深度优先遍历:前序.中序.后续遍历. 遍历序列:将树中所有元素遍历一遍后,得到 ...