java 五子棋项目_Java项目如何实现五子棋小游戏

Java项目如何实现五子棋小游戏

发布时间:2020-07-21 14:53:06

来源:亿速云

阅读:77

作者:小猪

小编这次要给大家分享的是Java项目如何实现五子棋小游戏,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

项目名称

五子棋小游戏

项目描述

可以改变获胜棋子数,率先连成棋数的人获胜

代码实现

测试类

public class Test {

public static void main(String[] args) {

FiveChess fiveChess = new FiveChess();

fiveChess.start();

}

}

主类:实现主方法

public class FiveChess {

private static final int CheckerSize = 10;

private static final int successSize = 5;

private Chess[][] chess;

private int xPos;

private int yPos;

private boolean flag = true;

private Scanner scanner = new Scanner(System.in);

public FiveChess(){

chess = new Chess[CheckerSize][CheckerSize];

}

private void initCheck(){

for(int i=0;i

for(int j=0;j

chess[i][j] = new Chess("十");

}

}

}

private boolean judge(int xPos,int yPos){

//横向

if(yPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos][yPos-1].getValue()) ||

yPos+1

int count = 1;

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

if (yPos - i >= 0 && chess[xPos][yPos - i].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

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

if (yPos + i < CheckerSize &&

chess[xPos][yPos + i].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

return count >= successSize ? true : false;

}

//纵向

if (xPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos].getValue()) ||

xPos+1

int count = 1;

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

if (xPos- i >= 0 && chess[xPos-i][yPos].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

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

if (xPos + i < CheckerSize &&

chess[xPos+i][yPos].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

return count >= successSize ? true : false;

}

//正斜线

if (xPos-1>=0 && yPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos-1].getValue()) ||

xPos+1

chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos+1].getValue())){

int count = 1;

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

if (xPos - i >= 0 && yPos - i >= 0 &&

chess[xPos-i][yPos-i].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

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

if (xPos + i < CheckerSize && yPos + i < CheckerSize &&

chess[xPos+i][yPos+i].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

return count >= successSize ? true : false;

}

//反斜线

if (xPos-1>=0 && yPos+1

chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos+1].getValue()) ||

xPos+1=0 &&

chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos-1].getValue())){

int count = 1;

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

if (xPos - i >= 0 && yPos + i

chess[xPos-i][yPos+i].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

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

if (xPos + i < CheckerSize && yPos - i >= 0 &&

chess[xPos+i][yPos-i].getValue().equals(chess[xPos][yPos].getValue())) {

count++;

} else {

break;

}

}

return count >= successSize ? true : false;

}

return false;

}

private void runChess(String run){

System.out.println("请输入"+run+"坐标:");

xPos = scanner.nextInt();

yPos = scanner.nextInt();

if(chess[xPos-1][yPos-1].getValue().equals("十")){

if(run.equals("黑棋")){

chess[xPos-1][yPos-1] = new Chess("●");

}

else if(run.equals("白棋")){

chess[xPos-1][yPos-1] = new Chess("〇");

}

for(int i=0;i

for (int j=0;j

System.out.print(chess[i][j].getValue());

}

System.out.println();

}

if(judge(xPos-1,yPos-1)){

flag = false;

System.out.println(run+"获胜");

System.out.println("游戏结束,是否重玩");

String finish = scanner.next();

if (finish.equals("是")){

flag = true;

start();

}

else if (finish.equals("否")){

System.exit(0);

}

}

}else {

System.out.println("该处已存在棋子,请重新选择");

runChess(run);

}

}

public void start(){

initCheck();

System.out.println("请选择先走方:黑棋or白棋");

String run = scanner.next();

for(int i=0;i

for (int j=0;j

System.out.print(chess[i][j].getValue());

}

System.out.println();

}

while (flag) {

switch (run) {

case "黑棋":

runChess("黑棋");

run = "白棋";

break;

case "白棋":

runChess("白棋");

run = "黑棋";

break;

default:

}

}

}

}

结点类

public class Chess {

private String value;

public Chess(String value){

this.value = value;

}

public String getValue() {

return value;

}

}

看完这篇关于Java项目如何实现五子棋小游戏的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中多线程的使用!!

简介&#xff1a; 1.要了解多线程&#xff0c;首先我们得先了解进程和线程。那么什么是进程&#xff1f;进程就是一个正在运行的程序分配内存让应用程序能够运行的叫做进程。那么什么又是线程呢&#xff1f;线程&#xff1a;在一个程序中&#xff0c;负责代码的执行&#xff0c…

java pkcs1转pkcs8_pkcs1与pkcs8格式RSA私钥互相转换

1、PKCS1私钥生成openssl genrsa -out private.key 1024private.key文件内容如下&#xff1a;-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQDREk3uy4x9i4a16OYOYEp5Ir2f16lsmUHB2HjGDlxkU0ju9YApyeZlUXb191ZkxJ2vx2vKppN4gKLDy5r7JMTpwch1CNvceySX6DiM4lwTAnUEZiBYgNBNrKINEt…

嵌入式码头,Vaadin和焊接

当我开发Web应用程序时&#xff0c;我希望能够从Eclipse快速启动它们&#xff0c;而不必依赖各种重量级的tomcat或glassfish插件。 因此&#xff0c;我通常要做的只是创建一个可以直接从Eclipse运行的基于Java的简单启动器。 该启动器会在几秒钟内启动&#xff0c;因此使开发工…

创建真机调试证书(苹果开发者平台各个选项对应的含义)

创建真机调试证书&#xff08;苹果开发者平台各个选项对应的含义&#xff09; 原文地址&#xff1a;http://jingyan.baidu.com/article/ff411625b8141312e48237a7.html转载于:https://www.cnblogs.com/siasyl/p/5340593.html

gl.vertexAtteib3f P42 讲数据传给location参数指定的attribute变量

参数  location  指定将要修改的attribute变量存储位置 v0  指定填充attribute变量第一个分量的值 v1  指定填充attribute变量第二个分量的值 v2  指定填充attribute变量第三个分量的值 var VSHADER_SOURCE attribute vec4 a_Position;\n void main(){\n gl_Posit…

将Spring集成到旧版应用程序中

所有Spring开发人员喜欢做的事情之一就是将Spring塞入他们正在工作的任何应用程序中–这是我生活中的罪恶感之一&#xff1a;您看到一些代码&#xff0c;认为它是垃圾&#xff0c;因为它包含几个众所周知的反模式&#xff0c;然后想想如果这个应用程序是Spring应用程序会多么酷…

java自己实现ioc_springioc原理、springmvc项目分析、自己实现IOC

从一个面试题开始&#xff1a;你自己实现IOC容器的话&#xff0c;保存bean你会使用什么数据结构来保存呢&#xff1f;现在的很多开发人员(甚至3年以上的)不一定能回答这问题&#xff0c;为什么会这样呢&#xff1f;这个跟现在springboot现在已经高度成熟了&#xff0c;很多配置…

实现两级下拉框的联动

1.实现两级下拉框的联动。 功能&#xff1a;实现点击年级下拉框&#xff0c;加载对应科目的下拉框。 第一步&#xff1a;首先要加载年级下拉框中的数据。 01.在GradeDAL层&#xff08;数据访问层&#xff09;写一个方法&#xff0c;查询所有年级的信息。 /// <summary>//…

System.nanoTime()背后是什么?

在Java世界中&#xff0c;对System.nanoTime&#xff08;&#xff09;的理解非常好。 总有一些人说它是快速&#xff0c;可靠的&#xff0c;并且在可能的情况下&#xff0c;应该使用它代替System.currentTimemillis&#xff08;&#xff09;进行计时。 总的来说&#xff0c;他绝…

python连接SQL Server取多个结果集:Pymssql模块

基本的用法可以参考&#xff1a;python连接SQL Server&#xff1a;Pymssql模块 和上一篇文章中的代码&#xff0c;只取一个结果集不同&#xff0c;这次会一次运行2个sql语句&#xff0c;然后分别取出2个结果集&#xff0c;打印输出。 代码中有详细的注释&#xff0c;一看就明白…

状态不属于代码

Web应用程序中的“状态”是什么&#xff1f; 它就是要存储的数据&#xff08;无论目的地是什么—内存&#xff0c;数据库&#xff0c;文件系统&#xff09;。 应用程序本身不得在代码中存储任何状态。 这意味着您的类应仅包含带有无状态对象的字段。 换句话说&#xff0c;在程序…

Xen安全架构sHype/ACM策略配置图文教程

实验要求 1. 熟悉Xen虚拟化平台部署&#xff1b; 2. Xen sHype/ACM安全架构中的Simple TE和Chinese Wall策略及事实上现机制的分析与验证。 第1章 Xen环境部署 1.1 版本号选择 因为Ubuntu使用广泛。软件包易于下载。我们选择Ubuntu系统进行Xen部署…

Python 辨异 —— __init__ 与 __new__

__init__ 更多的作用是初始化属性&#xff0c;__new__ 进行的是创建对象&#xff0c;显然 __new__ 要早于 __init__ 发生。 考虑一个继承自 tuple 的类&#xff0c;显然在 __init__ 无法对其成员进行修改&#xff1b; class Edge(tuple):def __new__(cls, e1, e2):return tuple…

java弹出虚拟键盘_JS实现电脑虚拟键盘的操作

本文实例为大家分享了JS实现电脑虚拟键盘的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下需求&#xff1a;1.当输入框光标聚焦时&#xff0c;电脑虚拟键盘弹出2.在输入框输入内容时&#xff0c;键盘跟着变化具体实现代码如下&#xff1a;Html部分&#xff1a;电脑键…

Apache Mahout:入门

最近&#xff0c;我有一个有趣的问题要解决&#xff1a;如何使用自动化对不同来源的文本进行分类&#xff1f; 前一段时间&#xff0c;我读到一个有关该项目以及许多其他文本分析工作的项目– Apache Mahout 。 尽管它不是一个非常成熟的版本&#xff08;当前版本为0.4 &#x…

Javascript中最常用的55个经典技巧(转)

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制 3. οnpaste"…

向数组添加元素 java_java如何向数组里添加元素

向数组里添加一个元素怎么添加&#xff0c;这儿总结有三种方法&#xff1a;1、一般数组是不能添加元素的&#xff0c;因为他们在初始化时就已定好长度了&#xff0c;不能改变长度。但有个可以改变大小的数组为ArrayList&#xff0c;即可以定义一个ArrayList数组&#xff0c;然后…

JBoss Drools –入门

这篇文章是关于我如何掌握JBoss Drools的 。 其背后的原因是&#xff1a;SAP收购了我公司当前的规则引擎&#xff0c;而Drools是我们将寻找的另一种选择&#xff0c;只要有人掌握了概念验证的技能即可。 尽管似乎有大量的文档&#xff0c;但是我总是会通过示例来发现它是有帮助…

android使用bintray发布aar到jcenter

前言 这两天心血来潮突然想把自己的android library的aar放到jcenter里面&#xff0c;这样一来自己便可以在任何时间任何地点通过internet得到自己的library的引用了&#xff0c;况且现在android studio已经默认使用jcenter的repositories作为依赖来源&#xff0c;以前的mavenc…

Java不是文明语言吗?

几周前&#xff0c;我有机会学习iOS编程。 我的老板认为我更像是“计算机科学家”&#xff0c;而不是开发人员&#xff0c;这意味着我可以将自己的知识应用于开发一两个iPad应用程序–我要做的就是学习Objective-C&#xff0c; iOS SDK&#xff1a;到底有多难&#xff1f; 尽管…