经过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. GetQueuedCompletionStatus客户端前端和server之间的通信

    项目中遇到了这个东西,怎么都调试不到.记录下. 一.完成端口IOCP https://www.cnblogs.com/yuanchenhui/p/iocp_windows.html

  2. Innodb的存储及缓存

    参考[mysql技术内幕] 一.mysql体系结构和存储引擎 1.数据库与数据库实例 数据库:物理操作系统文件或者其他文件组成的集合: 数据库实例:有数据库后台进程/线程和一个共享内存区域组成. 数据 ...

  3. ThinVnc-身份验证绕过(CVE-2019-17662)

    ThinVnc-身份验证绕过(CVE-2019-17662) 简介 ThinVNC是一款以网页浏览器为基础设计的远端桌面连接工具,不局限用户端使用那种作业平台,都可以通过采用HTML5为标准的浏览器来 ...

  4. Python数据格式:%s字符串,%d整型,%f浮点型

    格式化符% name="Tom" age=int(input("age")) pt2="%s你的年龄是%d"%(name,age) prin ...

  5. JavaScript offset、client、scroll家族

    offsetParent <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. Spring Boot 轻量替代框架 Solon 的架构笔记 - new

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  7. 修饰符static和abstract

    修饰符static和abstract static static可以修饰类中的方法,属性等,被修饰后的方法和属性可以通过类名直接调用也可以通过对象调用.普通的变量只能通过对象进行调用. 静态方法直接可 ...

  8. beego 框架用的页面样式模板

    https://themequarry.com/category/free 页面样式

  9. python matrix转list

    a = [[1,2],[3,4]] a = np.mat(a) print(a.getA().tolist())

  10. python-顺序串基本操作的实现

    1 #*********************************************************************** ** 2 #> File Name: seq ...