环境:python
使用的第三方库:pygame
若为安装pygame请在终端输入"pip install pygame"安装pygame后再运行程序
废话不多说直接上代码(有注释!!!)

import pygame, sys # 声明 导入需要的模块
from pygame.locals import *
from math import pipygame.init()# 初始化pygame
screen = pygame.display.set_mode((700,700))# 设置窗口的大小,单位为像素
pygame.display.set_caption('井字棋')# 设置窗口的标题# 定义基础颜色
BLACK = ( 0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = ( 0, 255, 0)
BLUE = ( 0, 0, 255)# 九个格子的位置(写死,有更好的方法请告诉我(肯定有))
box1=[50,50,195,195]
box2=[50,250,195,195]
box3=[50,450,195,195]
box4=[250,50,195,195]
box5=[250,250,195,195]
box6=[250,450,195,195]
box7=[450,50,195,195]
box8=[450,250,195,195]
box9=[450,450,195,195]
# 放进一个大的格子数组中
boxes=[box1,box2,box3,box4,box5,box6,box7,box8,box9]# 绘制黑色作为背景
screen.fill(BLACK)
# 绘制棋盘
for i in range(0,9):pygame.draw.rect(screen, WHITE, boxes[i], 3)
# 棋子标识 1为圈 ,0为叉
status = 1
# 已经下了几颗棋子
number = 0
# 棋盘和棋子,0为空,1为圈,2为叉
nine = [[0,0,0],[0,0,0],[0,0,0]]# 判断是否有一方胜出
def isWin(q):# 遍历每一种胜出的条件if nine[0][0] == q and nine[0][1] == q and nine[0][2] == q:drawWin(q)elif nine[1][0] == q and nine[1][1] == q and nine[1][2] == q:drawWin(q)elif nine[2][0] == q and nine[2][1] == q and nine[2][2] == q:drawWin(q)elif nine[0][0] == q and nine[1][0] == q and nine[2][0] == q:drawWin(q)elif nine[0][1] == q and nine[1][1] == q and nine[2][1] == q:drawWin(q)elif nine[0][2] == q and nine[1][2] == q and nine[2][2] == q:drawWin(q)elif nine[0][0] == q and nine[1][1] == q and nine[2][2] == q:drawWin(q)elif nine[2][0] == q and nine[1][1] == q and nine[0][2] == q:drawWin(q)# 平局elif number == 9 :drawDraw()else:return False
# 胜出一方提示
def drawWin(q):if q == 1:font = pygame.font.Font('BankgothicMB.ttf', 45)text = font.render('Circle WIN!!!', True, RED)screen.blit(text, (210, 300))elif q == 2:font = pygame.font.Font('BankgothicMB.ttf', 45)text = font.render('X WIN!!!', True, RED)screen.blit(text, (260, 300))
# 平局提示
def drawDraw():font = pygame.font.Font('BankgothicMB.ttf', 40)text = font.render('THE GAME HAS DRAWN!', True, RED)screen.blit(text, (85, 300))while True: # 程序主循环for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()elif event.type == MOUSEBUTTONDOWN:pos = pygame.mouse.get_pos()# 判断鼠标点击在哪个格子上x = (pos[0]-50) // 200y = (pos[1]-50) // 200# 筛选掉已经下过的格子if nine[x][y] == 0 and status == 1 :# 画圈pygame.draw.arc(screen, GREEN,[x*200+75,y*200+75, 150, 150], 0, 2*pi, 5)nine[x][y]=1number +=1# 当下到第五颗棋时开始判断是否有一方胜出if number>4:isWin(1)status = 0# 叉方,逻辑同上elif nine[x][y] == 0 and status == 0 :# 画叉pygame.draw.line(screen, BLUE, [x*200+75, y*200+75], [x*200+225, y*200+225], 6)pygame.draw.line(screen, BLUE, [x*200+225, y*200+75], [x*200+75, y*200+225], 6)nine[x][y]=2number +=1if number>4:isWin(2)status = 1else :passpygame.display.update()# 绘制屏幕内容

pygame编写井字棋游戏相关推荐

  1. C语言第十课:编写井字棋游戏(综合练习1)

    目录 前言: 一.文件建立: 1.头文件game.h: 2.函数定义文件game.c: 3.工程测试文件test.c: 二.编写井字棋游戏: 1.程序整体执行思路: 2.menu菜单函数实现: 3.g ...

  2. php井字游戏,python实现井字棋游戏

    #本游戏python3.4.0下编写调试,只能在windows下运行. import random import subprocess import time #定义函数 def draw_board ...

  3. c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc...

    [2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏 实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏 一.实验目的与要求 (1)了解极大极小算法的原理和使用方法,并 ...

  4. python井字棋游戏大作业实验报告_Part 1.2 - 实现一个井字棋游戏的gym环境

    上文已经描述了怎么创建和注册一个自定义的gym环境.但是环境类中的4个函数都是空的,本文将描述怎么实现那4个函数,实现一个完整的井字棋游戏的环境. 游戏规则:两个玩家在3x3的棋盘上,一方执X,一方执 ...

  5. pygame实现井字棋——3.逻辑优化

    前言 先说一下本期的目标. 首先我们在判断出输赢.平局的时候,只有一个控制台输出,很明显不符合我们游戏的排面(doge 另外,之前的逻辑有一个漏洞,就是玩家一定是先手(就是第一个下棋的人,这个也需要修 ...

  6. python井字棋游戏代码_python实现井字棋游戏

    python实现井字棋游戏 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  python实现井字棋游戏.txt ] (友情提示:右键点上行txt文档名->目标 ...

  7. python编写井字棋_编写井字游戏

    python编写井字棋 Programming computer games may be the most technically challenging (and possibly the bes ...

  8. C语言实现“井字棋”游戏(三子棋)人机对弈

    井字棋游戏:即三子棋,英文名叫Tic-Tac-Tic,是一种在3*3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边线框,格线排成井字故得名. 题目分析 : 要完成该游戏的编写,我们需要先分 ...

  9. Tic-Tac-Toe游戏简介(AI井字棋游戏)

    本章游戏项目将介绍如何使用AI(Artificial Intelligence,人工智能)来创建计算机对手.在该游戏中,玩家和计算机进行一场高赌注的人机Tic-Tac-Toe决战.计算机的棋艺令人生畏 ...

  10. Minimax 和 Alpha-beta 剪枝算法简介,及以此实现的井字棋游戏(Tic-tac-toe)

    前段时间用 React 写了个2048 游戏来练练手,准备用来回顾下 React 相关的各种技术,以及试验一下新技术.在写这个2048的过程中,我考虑是否可以在其中加入一个 AI 算法来自动进行游戏, ...

最新文章

  1. card2phone android,Installing application on SD-card in Android sdk 2.2
  2. NGUI中深度depth和z轴关系的小试验
  3. linux系统编程之进程(七):system()函数使用【转】
  4. python 代码文件路径注意事项
  5. ajaxpro定时刷新页面
  6. UVa 11991 一道简单题
  7. Windows 引导修复
  8. 【历史上的今天】5 月 31 日:Amiga 之父诞生;BASIC 语言的共同开发者出生;黑莓 BBM 停运
  9. 几款实用的VUE移动端UI框架
  10. 网页加速之Prefetching VS Prerendering
  11. 网关统一配置解决跨域问题
  12. 大学英语综合教程二 Unit 4 课文内容英译中 中英翻译
  13. 各类多媒体计算机硬件设备,多媒体教室主要有哪些硬件设备
  14. 帧锁定算法解决游戏同步
  15. cefsharp(基于chrome浏览器的web控件)
  16. 【oracle分区:分区表/分区索引查看,在线重建分区索引】
  17. 【perl】文件测试符
  18. mcm智拼图_申请英国G5不可或缺的“拼图”——2021年上半年高含金量国际竞赛汇总...
  19. 从产品角度,看看康巴汉子“丁真”为什么这么火
  20. c语言打印浮点数错误,printf打印浮点数出错

热门文章

  1. [lua]紫猫lua教程-命令宝典-L1-01-07. table表
  2. 离线数仓03-数仓分层业务逻辑
  3. Mysql导入Hive并查询全程记录
  4. Java之Joda工具包处理时间的7点总结分享
  5. js怎么获取扫码枪条码_如何使用JavaScript获取扫码枪扫描得到的条形码
  6. 蛋白质组学检测发展前景
  7. dev、test和staging、prod是什么意思?
  8. 软件项目架构简单总结
  9. 浅谈有监督学习的分类与回归
  10. 【读书笔记】《早起的奇迹》