当前位置: 首页 > news >正文

海尔集团电子网站建设线上教育培训机构十大排名

海尔集团电子网站建设,线上教育培训机构十大排名,网站建设与发布的预算,网站下载速度测试控制台实现五子棋游戏,供大家参考,具体内容如下控制台打印棋盘编写两人对弈的五子棋游戏,游戏规则:黑白双方有一方首先实现五子连续,则获胜,游戏结束。代码:import java.util.Scanner;public cl…

控制台实现五子棋游戏,供大家参考,具体内容如下

控制台打印棋盘

编写两人对弈的五子棋游戏,游戏规则:黑白双方有一方首先实现五子连续,则获胜,游戏结束。

171457c4a1fa06321ac801d2704f4944.png

代码:

import java.util.Scanner;

public class Wuziqi {

//自定义二维数组来描述棋盘,默认初始值为0

int[][] chessBoard = new int[16][16];

//自定义成员方法来绘制棋盘

void paint(){

//1.先绘制棋盘中第一行的坐标信息,也就是列坐标信息

for (int i = 0; i < 17; i++) {

if( 0 == i){

System.out.println(" ");

}else {

//按照16进制打印i-1的数值

System.out.printf("%x " , i - 1);

}

}

System.out.println();

//2.绘制棋盘中除了第一行之外的其他部分以及行坐标信息

for (int i = 0; i < 16; i++) {

//用于打印行坐标信息

System.out.printf("%x ", i);

for (int j = 0; j < 16; j++) {

//刚开始棋盘中所有内容都是+ , 因此直接打印

if (0 == chessBoard[i][j]){

System.out.print("+ ");

} else if (1 == chessBoard[i][j]){

System.out.print("● ");

}else {

System.out.print("○ ");

}

}

//打印完一行的所有内容之后进行换行

System.out.println();

}

}

//自定义成员方法来提示黑方和白方分别下棋

void play(){

//定义标志位来进行黑方和白方的切换,true代表黑方,false代表白方

boolean flag = true;

//不断地分别提示黑方和白方下棋

while(true){

System.out.println("请" + (flag ? "黑方" : "白方") + "输入落子坐标(x,y):");

Scanner sc = new Scanner(System.in);

int x = sc.nextInt();

int y = sc.nextInt();

//根据用户输入的坐标来调整棋盘中的图案,策略为改变数值的元素值,

//当黑子落子时就将数组中对应的元素值改为1,当白方落子时就将数组中对应的元素改为2

chessBoard[x][y] = (flag ? 1 : 2);

//重新绘制图案

paint();

//判断当前方是否胜利,若胜利就结束游戏

if (Success(x, y)) {

System.out.println("恭喜" + (flag ? "黑方" : "白方") + "胜利了!");

break;

}

// 此时切换下棋方

flag = !flag;

}

}

//自定义成员方法来判断用户是否获胜,获胜的规则时:任意相同颜色的5个棋子连成一条线

boolean Success(int x, int y){

//1.判断竖向是否连成一线,则需要以该点为中心向上四个点向下四个点

//声明变量来统计竖向相同颜色棋子的个数,先统计向上同色棋子的个数

//先统计向上颜色相同的个数

int count = 1;

for (int i = x - 1; i >= 0; i--) {

//若当前点代表的棋子与上述某个点代表的棋子不一样,则向上统计结束

if (chessBoard[x][y] != chessBoard[i][y]){

break;

}

count++;

}

//再统计向下颜色相同的个数

for (int i = x + 1; i < chessBoard.length; i++) {

if (chessBoard[x][y] != chessBoard[i][y]){

break;

}

count++;

}

if (5 == count){

return true;

}

//2.判断横向是否连成一条线,则需要以该店为中心向左四个点向右四个点

count = 1;

//先统计向左颜色相同的个数

for (int j = y - 1; j >= 0; j--) {

//若当前点代表的棋子与上述某个点代码的棋子不一样,则向上统计结束

if (chessBoard[x][y] != chessBoard[x][j]) {

break;

}

count++;

}

//再统计向右颜色相同的个数

for (int j = y + 1; j < chessBoard.length; j++) {

if(chessBoard[x][y] != chessBoard[x][j]){

break;

}

count++;

}

if (5 == count){

return true;

}

// 3.判断左上到右下是否连成一线,则需要以该点为中心向左上四个点向右下四个点

count = 1;

// 先统计左上颜色相同的个数

for (int i = x-1, j = y - 1; i >= 0 && j >= 0; i--, j--) {

// 若当前点代表的棋子与上述某个点代表的棋子不一样,则向上统计结束

if (chessBoard[x][y] != chessBoard[i][j]) {

break;

}

count++;

}

// 再统计右下颜色相同的个数

for (int i = x+1, j = y + 1; i <= 15 && j <= 15; i++, j++) {

if (chessBoard[x][y] != chessBoard[i][j]) {

break;

}

count++;

}

if (5 == count) {

return true;

}

// 4.判断右上到左下是否连成一线,则需要以该点为中心向右上四个点向左下四个点

count = 1;

// 先统计右上颜色相同的个数

for (int i = x-1, j = y + 1; i >= 0 && j <= 15; i--, j++) {

// 若当前点代表的棋子与上述某个点代表的棋子不一样,则向上统计结束

if (chessBoard[x][y] != chessBoard[i][j]) {

break;

}

count++;

}

// 再统计左下颜色相同的个数

for (int i = x+1, j = y - 1; i <= 15 && j >= 0; i++, j--) {

if (chessBoard[x][y] != chessBoard[i][j]) {

break;

}

count++;

}

if (5 == count) {

return true;

}

// 当上述所有情况都不成立时,表示该下棋方没有获胜

return false;

}

}

public class WuziqiTest {

public static void main(String[] args) {

//声明一个Wuziqi类型的引用指向Wuziqi类型的对象

Wuziqi wz = new Wuziqi();

//调用paint()方法打印列信息

wz.paint();

//下棋开始

wz.play();

}

}

结果如下

6fc6e2294a216bf87b9d877ed141a026.png

文中没有对下棋时候的数组下标进行合理值判断,各位可自行完善。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

http://www.lbrq.cn/news/2602981.html

相关文章:

  • 手机端做的优秀的网站设计娱乐热搜榜今日排名
  • 网站建设需要工作计划百度seo价格
  • 西安网站建设招聘优帮云排名优化
  • 淘宝做网站 评价话语关键词挖掘查询工具
  • 自己建私人网站做外贸不好做谈谈你对网络营销的看法
  • 全网网站建设优化活动策划公司
  • 工商注册核名查询系统官网免费使用seo软件
  • 创建网站的准备wordpress自助建站
  • 网站建设方案策划北京疫情最新新闻
  • 建行官网网站2023年又封城了
  • dw做的网站如何让别人看看西安网站维护公司
  • 公司做网站需要discuz论坛seo设置
  • 网站流量怎么做成品网站货源1688在线
  • 杭州微跑网站建设公司2345浏览器网址导航
  • 政法网站内容建设以图搜图
  • wordpress模块化布局西安关键词优化服务
  • 小伙反串做直播视频网站新闻 近期大事件
  • 做a小视频免费观看网站上海专业的seo公司
  • 陕西煤炭建设公司网站南宁seo费用服务
  • 商城类网站如何众筹成都网多多
  • 新零售平台公司有哪些南宁seo咨询
  • 济南小程序网站开发知名seo公司
  • wordpress的分类idseo优化多久能上排名
  • 企业网站建设教程视频亿速云
  • 建设银行舟山分行网站网络推广营销方案100例
  • 政务网站建设工作总结深圳百度推广代理商
  • 廊坊建站服务如何自己创建一个网站
  • 一个人可以备案几个网站竞价服务托管公司
  • 软件技术就业前景怎么样兰州网络seo公司
  • 网站开发需要什么人员水果网络营销策划书
  • Redis里面什么是sdshdr,可以详细介绍一下吗?
  • Timer实现定时调度的原理是什么?
  • Python切片命名技术详解:提升代码可读性与维护性的专业实践
  • trace-cmd记录线程被中断打断的时间
  • JavaEE初阶第十三期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(十一)
  • 理解HTTP协议