五子棋

1324. 五子棋

孤街浪徒 提交于 2020-02-28 00:02:47
小 A 和小 B 在下五子棋。 五子棋是在一个由网格构成的棋盘内进行的。 网格有 15行 15 列,共有 225 个交叉点。 小 A 先手执黑棋,小 B 后手执白棋。 两人轮流下棋,每次下棋都将一个自己的棋子放在棋盘上一个空白的交叉点上。 然而,由于小 A 和小 B 都不知道五子棋的胜利条件,所以即使有一方已经胜利了,他们仍然会继续下棋。 现在想请你帮忙分析一下,所下的棋局是在第几步结束的。 当然,也有可能他们最终仍然没有分出胜负,这时请判定他们平局。 五子棋的胜利条件是这样的:当同一行或同一列或同一斜线(即与网格线成 45° 角的直线)上连续的五个或五个以上交叉点放有同色棋子的时候,立即判定使用该颜色棋子的玩家获得胜利,游戏结束。 输入格式 第一行输入一个正整数 n,表示双方 总共 下了多少步棋。 接下来 n 行,每行两个正整数。其中,第 i行的两个数 x,y表示第 i步的棋子下在了第 x 条横线和第 y 条竖线的交叉点上。若 i 为奇数,则这个棋子是黑棋,否则是白棋。 输出格式 若没有人获得胜利,你需要输出“Tie(不含引号)。 否则,若小 A 获胜,输出 “A”(不含引号),若小 B 获胜,输出 “B”(不含引号);并输出一个正整数 w 表示第 w 步下完后游戏应当结束,字母与整数间用一个空格隔开。 数据范围 对于 20% 的数据,游戏结果是平局。 对于 30的数据

JS+canvas实现五子棋人机大战

混江龙づ霸主 提交于 2020-02-27 02:49:46
1. 创建实例 function Gobang () { this.over = false; // 是否结束 this.player = true; // true:我 false:电脑 this.allChesses = []; // 所有棋子 this.existChesses = [] // 已经落下的棋子 this.winsCount = 0; // 赢法总数 this.wins = []; // 所有赢法统计 this.myWins = []; //我的赢法统计 this.computerWins = []; //电脑赢法统计 } 2. 初始化 //初始化 Gobang.prototype.init = function(opts) { // 生成canvas棋盘 this.createCanvas(opts); //棋盘初始化 this.boardInit(); // 鼠标移动聚焦功能实现 this.mouseMove(); //算法初始化 this.algorithmInit(); //落子功能实现 this.dorpChess(); } 3. 生成canvas棋盘 //初始化 //生成canvas Gobang.prototype.createCanvas = function(opts) { var opts = opts || {}; if (opts

JavaSE小游戏——五子棋

左心房为你撑大大i 提交于 2020-02-21 03:07:30
五子棋!!!!!!!! 五子棋是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,轮流下在棋盘直线与横线的交叉点上,先在横线、直线或斜对角线上形成5子连线者获胜。     因为棋子在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。 行棋:黑子先行,一人轮流一著下于棋盘空点处。 胜负:先把五枚或以上己棋相连成任何横纵斜方向为胜。(长连仍算胜利) 解题思路 !!!!!!! 需要创建一个String的二维数组来表示棋盘,棋盘具体用"+"来进行表示,大小为15*15。考虑到后面能在棋盘的左边和上面用序号进行标注,为了方便起见,我们横坐标用数字1-15来进行表示,纵坐标用字母A-O来进行表示。黑棋我们用字母"O"来表示,白棋我们用字母"X"来表示。在控制台输入1,A指的就是在(0,0)处下一个棋子。 进行五子棋游戏的大致步骤可分为以下几步: 1.初始化棋盘 initBoard() 2.打印棋盘 printBoard() 3.开始游戏 startGame() 4.下棋(黑白) putDownChess() 5.判断输赢 isGameOver() 这5个步骤里面最重要的步骤就是第五步,判断游戏输赢。我们需要考虑一个棋子的四个方向,右边、下边、右上和右下。 注:上述方法每次会去调用棋盘board数据,如果每次都将board当做参数传递给函数,就会显得比较麻烦

Python开发五子棋游戏【新手必学】

故事扮演 提交于 2020-02-13 10:21:00
五子棋源码,原创代码,仅供 python 开源项目学习。 目前电脑走法笨笨的,下一期版本会提高电脑算法 ps:另外很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我建了个Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步 第二版已发布与另外一篇博文,有兴趣的可以去查看下载。 import pygame import time SCREEN_WIDTH=900 SCREEN_HEIGHT=800 BG_COLOR=pygame.Color(200, 200, 200) Line_COLOR=pygame.Color(255, 255, 200) TEXT_COLOR=pygame.Color(255, 0, 0) # 定义颜色 BLACK = ( 0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = ( 0, 255, 0) BLUE = ( 0, 0, 255) class MainGame(): window = None Start_X = 50 Start_Y = 50 Line_Span = 40 Max_X = Start_X + 18 * Line

java五子棋人机

大憨熊 提交于 2020-01-28 17:05:53
初学Java,做个简单的五子棋人机对战(比较烂)锻炼一下逻辑思维,,, 暂时保存,以后完善。。。` package 五子棋; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import javax.swing.*; public class 人机 extends JFrame implements MouseListener { int x, y, X, Y, h, s, p, l, m, n, k, b = 10, c, max = 1, x1, y1; int[][] chess = new int[25][25];// 1黑2白 int[][] bai = new int[25][25];// 判断白棋下的位置 boolean canplay = true; public 人机() { this.setTitle("五子棋0.1"); this.setSize(800, 800); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this

[收藏]C++简单五子棋

自古美人都是妖i 提交于 2020-01-24 06:09:10
1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 5 const int X = 21; //棋盘行数 6 const int Y = 21; //棋盘列数 7 char p[X][Y]; //定义棋盘 8 int m = 0;//定义临时点,保存输入坐标 9 int n = 0; 10 11 void display() //输出棋盘 12 { 13 for (int i = 0; i < X; i++) 14 cout << setw(3) << setfill(' ') << i; 15 cout << endl; 16 for ( int i = 1; i < Y; i++) 17 { 18 cout << setw(3) << setfill(' ') << i; 19 for (int j = 1; j < X; j++) 20 cout << setw(3) << setfill(' ') << p[i][j]; 21 cout << endl; 22 } 23 24 } 25 26 void black() //黑方落子 27 { 28 cout << "请黑方输入落子位置:\n" 29 << "请输入落子的行数:"; 30 cin >> m; 31 cout << "请输入落子的列数

Java五子棋小游戏(控制台纯Ai算法)

夙愿已清 提交于 2020-01-13 22:46:36
Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看戏 本次Ai算法属于初级算法 稍微用点小套路还是可以干掉他的 以后会更新高级算法 本次还对程序进行了模块化 拆分成了几个文件 下面请看源码关联 下面请看源代码 GameApp.Java 游戏入口类 package main.game; /** 游戏入口类 **/ public class GameApp { /** 游戏入口 */ public static void main(String[] args) { Gobang game = new Gobang(); //Player Vs Ai Player p1 = new Player("玩家",'彩');//就这么特殊 就用彩棋 热性! Player p2 = new AiPlayer("机器人",'白'); //Player Vs Player //Player p1 = new Player("玩家",'黑'); //Player p2 = new Player("玩家2",'白'); //Ai Vs Ai //Player p1 = new AiPlayer("玩家",'黑'); //Player p2 = new

Java课程设计——五子棋

与世无争的帅哥 提交于 2020-01-10 10:09:42
一、团队名称、成员介绍 团队名称:啦啦啦队 团队成员: •何炎玲【组长】:201821123007 网络1811 负责模块:人机对战、难度等级、界面设计、撰写团队博客 •林莹 :201821123034 网络1812 负责模块:人人对战、胜负判定、计时器、代码规范 二、项目git地址 https://gitee.com/hhlhyl/Gobang.git 三、项目git提交记录截图 四、项目主要使用技术 •多线程 •UDP socket •GUI •日志 五、项目功能架构图、主要功能流程图 六、面向对象设计类图 七、项目运行截图 选择模式界面: 选择难度等级界面: 人机对战下棋界面: 人机对战悔棋功能: 人人对战下棋界面: 人人对战悔棋功能: 八、项目关键代码 九、项目代码扫描结果及改正 扫描结果: 改正后: 十、项目总结(不足) 1、倒计时结束并没有判断输赢,只是提示了对方“等得花儿都谢了” 2、用户不可以任意选择先后手 3、界面美化 4、使用UDP通信,目前只能连接到本机的IP 来源: https://www.cnblogs.com/hhlhyl/p/12173836.html

C++ Qt实现经典五子棋小游戏(双人游戏,人机大战)

为君一笑 提交于 2020-01-01 02:37:24
原创,转载请注明出处。 这里用Qt实现了五子棋,可进行双人游戏,人机对战,悔棋等操作,是C++,Qt的必备练手项目,界面设置如下图: 添加三个类,分别为游戏总控制类gamewidget 、界面类boardwidget和AI控制类gomokuai。代码分别如下: boardwidget.h: # ifndef BOARDWIDGET_H # define BOARDWIDGET_H # include <QWidget> # include <QStack> # include <QPoint> # include <QSet> typedef int ( * Board ) [ 15 ] ; class BoardWidget : public QWidget { Q_OBJECT public : explicit BoardWidget ( QWidget * parent = nullptr ) ; //设置棋盘控件接受的下棋方,在ai模式中只接受白色方,双人模式中都接受 void setReceivePlayers ( const QSet < int > & value ) ; //获取棋盘信息 Board getBoard ( ) ; protected : void paintEvent ( QPaintEvent * event ) ; void

java-五子棋游戏源码

痴心易碎 提交于 2019-12-25 02:31:53
代码如下 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JOptionPane; public class FiveChessFrame extends JFrame implements MouseListener, Runnable { private static final long serialVersionUID = 1L; int width = Toolkit.getDefaultToolkit().getScreenSize().width; int hight = Toolkit.getDefaultToolkit().getScreenSize()