经过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. docker封装Spring Cloud(单机版)

    一.概述 微服务统一在一个git项目里面,项目的大致结构如下: ./ ├── auth-server │ ├── pom.xml │ └── src ├── common │ ├── pom.xml ...

  2. 聊一聊JVM

    JVM 什么是JVM? ​ JVM是java虚拟机的缩写,本质上是一个程序,能识别.class字节码文件(.java文件编译后产生的二进制代码),并且能够解析它的指令,最终调用操作系统上的函数,完成我 ...

  3. ISC BIND9 - 最详细、最认真的从零开始的BIND 9 服务讲解

    DNS and BIND 服务的搭建说明 目录 目录 DNS and BIND 服务的搭建说明 1. 背景 1.1 DNS 1.2 FQDN 1.3 BIND 1.4 本文中搭建模拟DNS服务网络虚拟 ...

  4. 七. SpringCloud服务配置

    1. SpringCloud Config概述 1.1 分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个一个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于每个服务 ...

  5. a标签不能继承父级的颜色

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 基于es实现一个简单的搜索引擎

    一.什么是es Elasticsearch是一个基于ApacheLucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库.但 ...

  7. Java 语言基础 (初识Java语言, 变量和数据类型, 运算符, 流程控制语句, 数组)

    初始 Java 语言 Java SE -- Java Platform, Standard Edition 是 Java 平台的基础 Java SE 以前称为 J2SE, 可以编写桌面应用和基于 we ...

  8. python模块的打包和安装

    假设需要打包的模块文件名是mm.py,代码如下: a = 2 在mm.py文件的同目录下新建一个setup.py文件,代码如下: from distutils.core import setup se ...

  9. python3表格数据处理

    技术背景 数据处理是一个当下非常热门的研究方向,通过对于大型实际场景中的数据进行建模,可以用于预测下一阶段可能出现的情况.比如我们有过去的2002年-2018年的黄金价格的数据: 该数据来源于Gite ...

  10. 全网最详细的Linux命令系列-Find命令

    Find工具实战 Find工具实战,Find工具主要用于操作系统文件.目录的查找,其语法参数格式为: find path -option [ -print ] [ -exec -ok command ...