java语言写一个建议的五子棋
经过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语言写一个建议的五子棋的更多相关文章
- 用java语言写一个简易版本的登录页面,包含用户注册、用户登录、用户注销、修改密码等功能
package com.Summer_0421.cn; import java.util.Arrays; import java.util.Scanner; /** * @author Summer ...
- 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)
使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置jdk-15.0.1-免配置路径版提取码:earu免安装版 ...
- 教你如何使用Java手写一个基于链表的队列
在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...
- 用C语言写一个“事件”的模拟程序
源:用C语言写一个“事件”的模拟程序 Example.c //定义一个函数指针 func int (*func) (void); //调用该函数相当于触发了事件. //该事件触发后,会检查函数指针fu ...
- java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多
java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 也仿照着 netty处理了NIO的空轮询BUG 本项目并不复杂 代码不多 ...
- 只用120行Java代码写一个自己的区块链-3挖矿算法
在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...
- 用Java语言编写一个简易画板
讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...
- 只用120行Java代码写一个自己的区块链
区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...
- 用java代码写一个简单的网上购物车程序
需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法. 3.写一个购物车类,有添加商品方法.查看订单信息,删除商品,修 ...
随机推荐
- HTTP 请求URL中不能含有空格
如果含有空格 会报 不合法参数异常 正确做法是将其encode URLEncoder.encode(targetString, "utf-8").replaceAll(" ...
- 第40天学习打卡(静态代理 Lambda表达式 线程状态 线程同步 同步方法)
静态代理 package com.kuang.demo03; //静态代理模式总结 //真实对象和代理对象都要实现同一个接口 //代理对象要代理真实角色 //好处: //代理对象可以做很多真实对象 ...
- go 动态数组 二维动态数组
go使用动态数组还有点麻烦,比python麻烦一点,需要先定义. 动态数组申明 var dynaArr []string 动态数组添加成员 dynaArr = append(dynaArr, &quo ...
- 《PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路》 分享下载
转: <PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路> 分享下载 书籍信息 书名: PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路 标签: PYTHON机器学 ...
- 2.2 Python3基础-基本数据类型
>>返回主目录 源代码 # 基本数据类型 # Number类型:如何查看变量的数据类型? name = 'Portos' print(type(name)) # 结果:str print( ...
- strick-footer 粘边布局
当网页缩小, 缩放到一定高度时(这个高度就是页面内容高度)footer的页尾自动消失,这个就叫做粘边布局 strick-footer 粘边布局基本思路: 主体{ height:100%; } 内容体{ ...
- R绘图(3): 散点图添加文本注释
这里以火山图为例进行说明,在转录组分析中,火山图是很常见的一类图,纵轴表示p_value,横轴表示log (fold change).单一的散点图绘制很简单,火山图比较难处理的地方就是一些基因的注释, ...
- 关于win10 编辑文件时权限不足问题
win10默认是不开启administrator账户的,所以一般是自己创建一个账户,但是此账户,可能会有些文件或文件夹,访问不了,编辑不了,这时候,只需要右键->属性->安全->编辑 ...
- Debezium实现多数据源迁移(一)
背景: 某公司有三个数据库,分别为MySql.Oracle和PostgreSql.原有业务的数据都是来自于这三个DB,此处委托将原有的三个数据库整合成一个Mysql. 要求: 1.不影响原有系统的继续 ...
- cpu缓存和volatile
目录 CPU缓存的由来 CPU缓存的概念 CPU缓存的意义 缓存一致性协议-MESI协议 Store Buffers Store Forwarding Memory Barriers Invalida ...