下落棋

2024-01-07 04:08
文章标签 下落

本文主要是介绍下落棋,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

能够画出9*9格,有两个棋手A,B,交替输入列数0-9,由于重力原理,输入这个列下几行没有棋子,则自动下落;A显示棋子是X,B显示棋子O,要求当出现四连胜利!A和B交替进行:

import java.util.Scanner;public class practice7Arrays{//悬挂的四子棋public static void main(String[]args){Scanner input = new Scanner(System.in);String[][] qi = new String[6][7];String yuanShiYuanSu = "|   ";String yellow = "| Y ";String red = "| R ";int count = 0;//谁下子及下了多少子的判断计数器//初始化棋子数组for(int i = 0;i < qi.length;i++)for(int j = 0;j < qi[0].length;j++)qi[i][j] = yuanShiYuanSu;//画出原始棋盘System.out.println("-----------------------------");for(int i = qi.length - 1;i >= 0;i--){for(int j = 0;j < qi[0].length;j++)System.out.print(qi[i][j]);System.out.println("|");System.out.println("-----------------------------");}for(int i = 0;i < qi[0].length;i++)System.out.print("* "+(i+1)+" ");System.out.println("*");int row = 0,column = 0;//行列下标初始化//下棋循环开始while (true) {row = 0;column = 0;if (count % 2 == 0) {//黄方下子System.out.print("\n\nY player please drop a yellow disk at column(1~7):");while (true) {//黄方下子循环开始column = input.nextInt() - 1;if (column >= 0 && column <= 6) {// 输入合法进行下子for (row = 0; row < qi.length; row++) {if (qi[row][column] == yuanShiYuanSu) {qi[row][column] = yellow;break;}}if (row == qi.length)//该列棋子满,重新输入System.out.print("The column of you enter is full,"+ "please reEnter! : ");else//棋子没满,下子结束break;}else// 输入不合法,重新下子System.out.print("You enter the wrong column,"+ "please reEnter! : ");}//黄方下子循环结束}//if(count % 2 == 0)else{//红方下子System.out.print("\n\nR player please drop a yellow disk at column(1~7):");while (true) {//红方下子循环开始column = input.nextInt() - 1;if (column >= 0 && column <= 6) {// 输入合法进行下子for (row = 0; row < qi.length; row++) {if (qi[row][column] == yuanShiYuanSu) {qi[row][column] = red;break;}}if (row == qi.length)//该列棋子满,重新输入System.out.print("The column of you enter is full,"+ "please reEnter! : ");else//棋子没满,下子结束break;}else// 输入不合法,重新下子System.out.print("You enter the wrong column,"+ "please reEnter! : ");}//红方下子循环结束}//if(count % 2 != 0)//画出棋盘System.out.println("-----------------------------");for(int i = qi.length - 1;i >= 0;i--){for(int j = 0;j < qi[0].length;j++)System.out.print(qi[i][j]);System.out.println("|");System.out.println("-----------------------------");}for(int i = 0;i < qi[0].length;i++)System.out.print("* "+(i+1)+" ");System.out.println("*");//输赢标志位boolean flagForYWin = false;boolean flagForRWin = false;//只需对当前下子的周围情况进行判断来决定棋局结果if (count % 2 == 0) {//yellow player is win?//行检测开始if (column <= 3) {for (int jj = 0; jj <= column; jj++)if (qi[row][jj] == yellow&& qi[row][jj + 1] == yellow&& qi[row][jj + 2] == yellow&& qi[row][jj + 3] == yellow) {flagForYWin = true;break;}}else {for (int jj = column - 3; jj <= 3; jj++)if (qi[row][jj] == yellow&& qi[row][jj + 1] == yellow&& qi[row][jj + 2] == yellow&& qi[row][jj + 3] == yellow) {flagForYWin = true;break;}}if (flagForYWin) {System.out.println("The yellow player win the game!");break;}//列检测开始if (row >= 3) {if (qi[row][column] == yellow&& qi[row - 1][column] == yellow&& qi[row - 2][column] == yellow&& qi[row - 3][column] == yellow)flagForYWin = true;}if (flagForYWin) {System.out.println("The yellow player win the game!");break;}//正反对角检测if(row >= 3){if(column < 3){if (qi[row][column] == yellow&& qi[row - 1][column + 1] == yellow&& qi[row - 2][column + 2] == yellow&& qi[row - 3][column + 3] == yellow)flagForYWin = true;}else if(column > 3){if (qi[row][column] == yellow&& qi[row - 1][column - 1] == yellow&& qi[row - 2][column - 2] == yellow&& qi[row - 3][column - 3] == yellow)flagForYWin = true;}else{if ((qi[row][column] == yellow&& qi[row - 1][column + 1] == yellow&& qi[row - 2][column + 2] == yellow&& qi[row - 3][column + 3] == yellow)|| (qi[row][column] == yellow&& qi[row - 1][column - 1] == yellow&& qi[row - 2][column - 2] == yellow&& qi[row - 3][column - 3] == yellow))flagForYWin = true;}}if (flagForYWin) {System.out.println("The yellow player win the game!");break;}}//yellow player is win?else{//red player is win?//行检测开始if (column <= 3) {for (int jj = 0; jj <= column; jj++)if (qi[row][jj] == red&& qi[row][jj + 1] == red&& qi[row][jj + 2] == red&& qi[row][jj + 3] == red) {flagForRWin = true;break;}}else {for (int jj = column - 3; jj <= 3; jj++)if (qi[row][jj] == red&& qi[row][jj + 1] == red&& qi[row][jj + 2] == red&& qi[row][jj + 3] == red) {flagForRWin = true;break;}}if (flagForRWin) {System.out.println("The red player win the game!");break;}//列检测开始if (row >= 3) {if (qi[row][column] == red&& qi[row - 1][column] == red&& qi[row - 2][column] == red&& qi[row - 3][column] == red)flagForRWin = true;}if (flagForRWin) {System.out.println("The red player win the game!");break;}//正反对角检测if(row >= 3){if(column < 3){if (qi[row][column] == red&& qi[row - 1][column + 1] == red&& qi[row - 2][column + 2] == red&& qi[row - 3][column + 3] == red)flagForRWin = true;}else if(column > 3){if (qi[row][column] == red&& qi[row - 1][column - 1] == red&& qi[row - 2][column - 2] == red&& qi[row - 3][column - 3] == red)flagForRWin = true;}else{if ((qi[row][column] == red&& qi[row - 1][column + 1] == red&& qi[row - 2][column + 2] == red&& qi[row - 3][column + 3] == red)|| (qi[row][column] == red&& qi[row - 1][column - 1] == red&& qi[row - 2][column - 2] == red&& qi[row - 3][column - 3] == red))flagForRWin = true;}}if (flagForRWin) {System.out.println("The red player win the game!");break;}}count++;//棋子数加1,并用于谁下棋子的判断//棋盘下满棋子,是平局if(count == 6*7){System.out.println("棋盘棋子已经下满,是平局!");break;}}//下棋循环结束}//方法块}//类块

这篇关于下落棋的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578671

相关文章

面试or笔试6——小球下落距离

小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果。 测试样例: 100,90,80,70 返回:1020 根据极限的思想可直接求得单个小球的下落距离之和为3*N c

NYISTOJ 63 小猴子下落 二叉树

小猴子下落 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果

Algorithm学习笔记 --- 小球下落问题(二叉树解法)

有一颗二叉树,最大深度为D,且所有的叶子深度都相同。所有的结点从上到下从左到右编号为 1,2,3,4,....,2^D-1.在结点1处放一个小球,它会往下落。每个结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则往左走,否则往右走,知道走到叶子结点。 一些小球从结点1处开始下落,最后一个小球会落到哪里呢?输入叶子深

【小球下落反弹】小球自由落下,每次落地后反跳回原高度的一半

一小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 使用C语言实现,具体代码: #include<stdio.h>int main(){float sn=100.0,hn=sn/2;for(int n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}printf("共经过%f米\n第10次反弹%f米高",

NYOJ 63 小猴子下落 二叉树之满二叉树

小猴子下落 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果开

63 小猴子下落

小猴子下落 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点

NYOJ63小猴子的下落

小猴子下落 时间限制: 3000  ms   |  内存限制: 65535  KB 难度: 3 描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果

Flutter-自定义表情雨下落动画

简述 今天给大家分享一个Flutter的表情雨的实现,具体的效果见下图,这个效果其实是工作中的一个小小的需求,这里面单独拿出来讲讲下这个效果的实现思路。 在以前特别是新手,遇到一些动画效果都是拿到需求后,在网络上去找寻类似的效果,然后修改修改就可以了,不知道你们是不是呢?其实从chatgpt出来以后,很多时候对于这种效果我们其实直接就可以问下gpt,gpt会给我们一些思路,只要我们表达的清晰,

unity体感游戏--接钻石游戏(一)游戏物体下落

之前完成一个体感接钻石的小游戏,大体过程就是天上掉钻石,用一个物体接住,这个物体是通过kinect来控制的他的前后左右。接到不同的钻石就可以获得不同的得分。 这段代码是下落的位置,下落的游戏物体,还定义了ScoreHit()得分。主要解决海上下落问题,此脚本具有通用性。 using UnityEngine;using System.Collections.Generic;public c

three.js 物体下落动画(重力加速度)

效果: <template><div><el-container><el-main><div class="box-card-left"><div id="threejs" style="border: 1px solid red"></div><el-button @click="loopFun"> 物体下落动画(重力加速度) </el-button><el-button @click="