展开

关键词

前言一个不是很好的项目,因为以前没写过,或者说对于没有人机对决的AI,感觉没什么好写的。 当然,我对算法这块也不怎么强,上次有朋友留言要项目,所以试着去写了下AI算法,用的是贪心算法,还没写完整,就先发个简单的双人对局简单版. 网络上找了一个不错的带AI的C++项目,算法看的也是这个博主提供的文章,整个源代码以及示例程序获取方式目录项目设计地图双方对决标志主体设计需要实现的功能:主函数初始化游戏绘制数据更新判断输赢左右判断 ,可能就是到给个评分机制,简单AI实现地图传统的地图是15*15,这次的项目也不例外#define MAP_ROW 15#define MAP_COL 15int Map; 为了美观,给地图添加一个外边框 :绘制盘行列线上面的步骤是绘制盘,下面就开始绘制和标识第四步:绘制步:绘制标识(标识就是最近下位置和等待落位置然后一个简单界面就完成了?

51440

用canvas一个表格和下

37810
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java

    .*; ** * --盘类 * public class ChessBoard extends JPanel implements MouseListener { public static final int MARGIN=30;边距 public static final int GRID_SPAN=35;网格间距 public static final int ROWS=15;盘行数 public static final int COLS=15;盘列数 Point;初始每个数组元素为null boolean isBlack=true;默认开始是黑先 boolean gameOver=false ;游戏是否结束 int chessCount;当前的个数 int xIndex,yIndex;当前刚下的索引 Image img; Image shadows; Color colortemp x,y位置已经有存在,不能下 if(x1ROWS||y1COLS||gameOver||findChess(x1,y1)) setCursor(new Cursor(Cursor.DEFAULT_CURSOR

    91630

    python3 画

    coding: utf-8定义盘的大小BOARD_SIZE = 15定义一个二维列表来充当盘board = * BOARD_SIZE board.append(row)在控制台输出盘的方法def 打印列表元素后不换行 print(board, end=) # 每打印完一行列表元素后输出一个换行符 print() initBoard() printBoard() inputStr = input(请输入您下的坐标 board = ● 电脑随机生成2个整数,作为电脑下的坐标,赋给board列表 还涉及 1.坐标的有效性,只能是数字,不能超出盘范围 2.下的的点,不能重复下 3.每次下后,需要扫描谁赢了 printBoard() inputStr = input(请输入您下的坐标,应以x,y的格式:n)

    40120

    python3 (tkinter)

    coding: utf-8from tkinter import * import randomBOARD_WIDTH = 535 BOARD_HEIGHT = 536 BOARD_SIZE = 15定义盘坐标的像素值和盘数组之间的偏移距 X_OFFSET = 21 Y_OFFSET = 23定义盘坐标的像素值和盘数组之间的比率。 禁止改变窗口大小root.resizable(width=False, height=False)修改图标root.iconbitmap(imagesfklogo.ico)设置窗口标题root.title( ((event.y - Y_OFFSET) Y_RATE), 14)) # 当下点没有时,才能下,用户才能下 if board == ╋: cv.create_image(userX * while(True): comX = random.randint(0, BOARD_SIZE - 1) comY = random.randint(0, BOARD_SIZE - 1) # 如果电脑要下的点没有

    36710

    Python 编程

    N年前用python写的游戏,电脑执白,只能判断一步,新手级别(可以再添加几层循环让它厉害一点) 。程序的UI界面是用python的标准库 Tkinter 写的,有点乱,现在已然看不懂。? Chessboard: def __init__(self,n=N): self.N = n self.count=0 #盘上双方总数 self.info={} #信息 for i in range (0,0)处为天元 def add_chess(self, x,y,camp): #x,y为的逻辑坐标,camp(阵营)取值为1或-1。 2:return 0 if lenth==5 or index in (0,lenth-1):return 1 #眠一 else: return 2 #活一#V_five=9999000000 # 成V_db_four w) self.create_line(xy+f,xy-d,xy+d,xy-d,xy+d,xy-f,width=w) def plot_chessman(self,x,y,camp): #(x,y):圆心

    88120

    canvas 游戏

    效果 代码 (function () { 画布绘制 let canvas = document.getElementById(canvas); let context = canvas.getContext let arcPosX, arcPosY; 保存在数组中的位置 let mtxPosX, mtxPosY; 和每一条线进行比较,如果相差10个像素以内,即,靠近 for(let x = 0; if(Math.abs(event.offsetY - (10 + x * 20)) < 10){ 获得需要的y arcPosY = 10 + x * 20; mtxPosY = x; } } 画出 == matrix && matrix == matrix){ if(matrix == 1){ alert(白方获胜); }else{ alert(黑方获胜); } } }) 思路 创建数组用于保存的位置即可 输赢判断使用遍历即可 重复落用判断保存的数组的位置是否已经有即可 落在交叉线和附近的点判断,如果相差小于一定数值进行落

    22720

    很难

    我们研究了十的计算复杂度。我们展示了在已知和未知对手的策略和掷骰的不同设置下,决定玩家是否能够从给定的盘配置中获胜是NP-Hard, PSPACE-Hard和EXPTIMEHard。 特别是在现实生活中,对手的策略和掷骰点数都是未知的,我们证明了决定玩家是否能够获胜的方法是EXPTIME-Hard。 有趣的是,并不清楚我们所考虑的每一个问题的严格复杂性类别是什么,因为双陆游戏理论上可以由于理解规则而无限期地继续下去。 十很难.pdf

    8330

    java编写

    String show1 = ; 默认黑方下 默认下黑 , 判断下什么。 bool=true 下黑 ; bool=false 下白 boolean bool = true ; 判断是否赢了比赛, 如果赢了比赛, 就不能再继续下了, boolean win =true getScreenSize().width ; int height = Toolkit.getDefaultToolkit().getScreenSize().height ; this.setTitle( =425&&e.getX()101&&e.getY()=5){zhong = true ; } return zhong ;}public boolean myCheck3() { 判断右斜向是否有相连 }i = 1 ;while((x-i)>=0&&(y+i)=5){zhong = true ;} return zhong ;}public boolean myCheck4() { 判左斜向是否有相连

    10500

    4.Python画一个

    今天我们通过wx.PaintDC在窗体上画出一个盘。 我们的盘是画在panel上的,所以画图事件也是绑定在panel上,画图的容器mydc也是建立在panel上。 我们通过 self.unit = 30、self.dotnum = 15来控制窗体及盘的大小,unit为格边长,dotnum为盘每条边的交点个数。 #画一个盘import wxclass myFrame(wx.Frame): def __init__(self): self.unit = 30 self.dotnum = 15 super(

    1.2K20

    python一个人机对战,AI版本

    川川以前梦寐以求的想找个对手,由于学习原因,实在没小伙伴陪我玩了,于是我就想着一个AI来陪我玩吧。 需要完整文件加我**QQ:2835809579**于是我就改编了一个,别说,这真的强,有时候我下不过他! 确定游戏界面的标题,大小和背景颜色 self.setObjectName(MainWindow) self.setWindowTitle() self.setFixedSize(650, 650) draw_pieces() # 绘制 qp.end() @run_with_exc def mouseMoveEvent(self, e): # 1. 首先判断鼠标位置对应盘中的哪一个格 mouse_x = e.windowPos().x() mouse_y = e.windowPos().y() if 25

    15520

    Canvas小游戏——

    image.png HTML主体 简单 中级 高级 黑先行 JS注释很详细,不过多介绍了,注意赢算法,和难易程度算法var num = 0;连胜次数var gameMode = false; 模式

    27120

    基于android实现开发

    基于Android的的开发,供大家参考,具体内容如下需求分析1 盘和绘制 2 按照的规则制定游戏胜负规则 3 鼠标响应 在对战中 需要通过鼠标点击下 进行游戏的基本操作 4 游戏模式 双人对战 两人交替落 双方孰先孰后随机决定 5 的形式和作用 分为黑白两种 双方各持一种 通过黑先白后的方式来进行对局 6 通过完成连珠结束游戏流程图? CheckWinner.java package com.example.wuziqi; import android.graphics.Point; import java.util.List;** * Created by Linux

    23320

    python实现程序

    游戏相信大部分人都玩过,今天我们用python来实现一次具体代码可以访问我的GitHub地址获取构建盘from collections import namedtuple Chessman = namedtuple(Chessman, Name Value Color)Point = namedtuple(Point, X Y) BLACK_CHESSMAN = Chessman(黑, 1, (45, 45, 45))WHITE_CHESSMAN = Chessman(白, 2, (219, 219, 219)) offset = class Checkerboard: def _checkerboard checkerboard = property(_get_checkerboard) # 判断是否可落 def can_drop(self, point): return _checkerboard == 0 def drop(self, chessman, point): 落 :param chessman: :param point:落位置 :return:若该落下之后即可获胜

    33120

    python -文字版(上)

    ----游戏介绍游戏相信大家应该都非常熟悉了,作为策略型类游戏还是非常经典的,双方分别使用黑白两色的,下在盘直线与横线的交叉点上,先形成连线者获胜;盘是由横纵各15条等距离,垂直交叉的平行线构成 ,按格数是14x14个;在一些专业的比赛中,又有禁手一说,禁手是指对局中禁止先行一方(黑方)使用的战术,之所有会出现这样的规则,是因为有手说,先行一方(黑方)的优势过大,甚至有必胜的走法。 所以会有各种规则来尽量减少先行的优势。程序设计思路 本次设计的是终端运行的字符类,无法实现交叉的效果,最后采用的是在格里面下采用两种不同的字符 O 和 X表示,最终的效果如下:要实现程序,有几个重要问题需要思考:1.盘采取那种数据结构? 全盘扫描判断水平,竖直,左右斜方向有没有连珠的根据最新下位置,部分扫描以当前下位置,判断水平,竖直,左右斜方向有没有连珠的4.行表示方法 以 6,6 这种格式代表行位置5.模式 人-机

    51831

    python实现人机

    本文实例为大家分享了python实现人机的具体代码,供大家参考,具体内容如下图形界面引用PyQt5,还有socket通信。可以局域网对战,可以人机对战,应该存在一些小的bug,但是还没有找出来。 .py代码:from PyQt5.QtWidgets import *from PyQt5.QtGui import *import sysimport MyButtonimport DoublePlayerGameimport __init__(parent)self.resize(760,650)self.setWindowTitle(我的)#设置窗口图标self.setWindowIcon(QIcon(sourceicon.ico ))#设置背景图片p = QPalette(self.palette())#获得当前的调色板brush = QBrush(QImage(source界面.png))p.setBrush(QPalette.Background )else:self.pic = QPixmap(source白.png)self.setPixmap(self.pic)self.setFixedSize(self.pic.size())#设置大小

    32430

    微信小程序(游戏)----(悔篇)

    DEMO效果图?分析悔功能需要的操作:判断当前持人;清空盘;将当前持人的数组的最后一个还原到全局坐标数组的位置;删除当前持人的数组的该坐标。 self.ABSCISSA_ARRAY.pointY].push(self.AIPoint); self.AIPoint.splice(LastA, 1); } self.drawAll(); } }注意判断游戏是否开始,如果没开始,就还没落, 不能悔;判断持人,对其数组操作;同时判断持人数组坐标个数,如果没有,则未落;重点是重绘盘,导致盘有一点闪动,未找到原因,哪位大神知道,帮忙解决一下,请联系QQ:1148063373

    18340

    前端谈谈实现

    自己利用周末的时间将休闲小游戏-重新梳理了一下,整理成一个小的教程,分享出来给大家指点指点。 规则的规则我简单梳理并且改造如下哈:对局双方各执一色;空盘开局;黑先、白后或者白先、黑后,交替下,每次只能下一;横线、竖线或者斜线上有连续个同一色的,则游戏结束;正式比赛的规则 ,可以戳百度百科了解下哈--。 这步的管理在后面的落步骤有提到。绘制有且仅有两种--黑色或者白色。这里也是使用canvas的知识点来绘制。 那么我们就对这四种情况进行处理,我们在矩阵中记录当前点击的数组点中是否有连续的个1(黑)或者连续的个2(白)即可。

    52120

    如何用python制作

    hi,大家好,今天就来将你如何用python制作话不多说,直接上代码! pos, 20, 0)def main(): board = RenjuBoard() is_black = True pygame.init() pygame.display.set_caption(

    6920

    CC++用QT写的源码

    77420

    相关产品

    • TencentOS Server

      TencentOS Server

      腾讯服务器操作系统(TencentOS Server,TS)是腾讯云推出的Linux操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云CVM全规格实例上,包括黑石2.0服务器。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券