用 Python 开发游戏——Python井字游戏

这篇具有很好参考价值的文章主要介绍了用 Python 开发游戏——Python井字游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

用 Python 开发游戏——Python井字游戏​​

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

什么是井字游戏?

Python 井字游戏——项目详情

先决条件

构建 Python 井字游戏的步骤

1.初始化游戏组件

2.初始化Pygame窗口

3.加载和转换图像

4.定义函数


毫无疑问,你一定在学生时代玩过井字游戏,我们每个人都喜欢玩这款游戏。您会惊讶地发现井字游戏自古埃及时代就已存在。

通过 TechVidvan 的这个 Python 项目,我们将构建一个交互式 Tic Tac Toe 游戏,我们将在此过程中学习新事物。

什么是井字游戏?

Tic Tac Toe 是玩得最多的游戏之一,也是最好的消磨时间的游戏,您可以在任何地方用笔和纸玩。如果您不知道如何玩这个游戏,请不要担心,让我们先了解一下。

游戏由两个人玩。首先,我们画一个 3×3 方格的棋盘。第一个玩家选择“X”并将其绘制在任何方形网格上,然后第二个玩家有机会在可用空间上绘制“O”。像这样,玩家在空白处交替绘制“X”和“O”,直到玩家成功地以水平、垂直或对角线方式绘制 3 个连续标记。然后玩家赢得游戏,否则当所有位置都填满时游戏平局。

用 Python 开发游戏——Python井字游戏

Python 井字游戏——项目详情

有趣的 Python 项目将使用 pygame 库构建。我们将解释该项目中使用的所有 pygame 对象方法。Pygame 是一个很棒的库,它允许我们创建窗口并在窗口上绘制图像和形状。这样我们将捕获鼠标坐标并确定我们需要标记“X”或“O”的块。然后我们将检查用户是否赢得了比赛。

先决条件

为了实现这个游戏,我们将使用 Python 和 Pygame 的基本概念,Pygame 是一个用于构建跨平台游戏的 Python 库。它包含计算机图形和声音库所需的模块。要安装该库,您可以从命令行使用 pip 安装程序:

pip install pygame

构建 Python 井字游戏的步骤

首先,让我们检查一下在 Python 中构建 Tic Tac Toe 程序的步骤:

  • 为我们的游戏创建显示窗口。
  • 在我们将玩井字游戏的画布上绘制网格。
  • 在画布下方绘制状态栏,以显示轮到哪个玩家以及谁赢得了游戏。
  • 当有人赢得比赛或比赛平局时,我们将重置比赛。

我们需要在无限循环中运行我们的游戏。它会不断寻找事件,当用户在网格上按下鼠标按钮时,我们将首先获取鼠标的 X 和 Y 坐标。然后我们将检查用户点击了哪个方块。然后我们将在画布上绘制适当的“X”或“O”图像。所以这基本上就是我们将在这个 Python 项目想法中做的事情。

1.初始化游戏组件

因此,让我们从导入 pygame 库和时间库开始,因为我们将使用time.sleep()方法在特定位置暂停游戏。然后我们初始化我们将在 Tic Tac Toe 游戏中使用的所有全局变量。

import pygame as pg,sys 
from pygame.locals import * 
import time 


#初始化全局变量
XO = 'x' 
winner = None 
draw = False 
width = 400 
height = 400 
white = (255, 255, 255) 
line_color = (10,10 ,10) 

#TicTacToe 3x3 棋盘
TTT = [[None]*3,[None]*3,[None]*3]

在这里,TTT 是主要的 3×3 井字棋盘,起初,它将有 9 个无值。我们将玩游戏的画布的高度和宽度为 400×400。

2.初始化Pygame窗口

我们使用 pygame 创建一个新窗口,我们将在其中玩 Tic Tac Toe 游戏。所以我们用pg.init()方法初始化pygame ,设置窗口显示宽度为400,高度为500。我们预留了100像素的空间用于显示游戏状态。

pg.display.set_mode ()初始化显示,我们用 screen 变量引用它。每当我们想在显示器上画东西时,都会使用这个屏幕变量。

pg.display.set_caption 方法用于设置将出现在显示窗口顶部的名称。

#初始化pygame窗口
pg.init() 
fps = 30 
CLOCK = pg.time.Clock() 
screen = pg.display.set_mode((width, height+100),0,32) 
pg.display.set_caption("Tic Tac Toe")

3.加载和转换图像

Python 项目使用了许多图像,例如游戏开始或重置时将显示的开场图像。当用户点击网格时我们将绘制的 X 和 O 图像。我们加载所有图像并调整它们的大小,以便它们很容易适合我们的窗口。

#加载图像
opening = pg.image.load('tic tac opening.png')
x_img = pg.image.load('x.png')
o_img = pg.image.load('o.png')

#调整图像大小
x_img = pg.transform.scale(x_img, (80,80))
o_img = pg.transform.scale(o_img, (80,80))
opening = pg.transform.scale(opening, (width, height+100))

4.定义函数

现在我们创建一个函数来启动游戏。当我们想要重新启动游戏时,我们也会使用这个函数。在 pygame 中,blit()函数用于在表面上绘制一个图像到另一个图像之上。

所以我们绘制开场图像,绘制之后,我们总是需要用pg.display.update()更新显示。绘制开始图像时,我们使用time.sleep(1)等待 1 秒,然后用白色填充屏幕。

接下来,我们在白色背景上绘制 2 条垂直线和水平线来制作 3×3 网格。最后,我们调用draw_status()函数

def game_opening(): 
    screen.blit(opening,(0,0)) 
    pg.display.update() time.sleep 
    (1) 
    screen.fill(white) 

    # 绘制垂直线
    pg.draw.line(screen,line_color,(width/3,0),(width/3, height),7)
    pg.draw.line(screen,line_color,(width/3*2,0),(width/3*2, height),7)
    # 绘制水平线
    pg.draw.line(screen,line_color,(0,height/3),(width, height/3),7)
    pg.draw.line(screen,line_color,(0,height/3*2),(width, height/3*2),7)
    draw_status()

draw_status ()函数绘制一个黑色矩形,我们在其中更新游戏状态,显示轮到哪个玩家以及游戏是结束还是平局。

def draw_status():
    global draw

    if winner is None:
        message = XO.upper() + "'s Turn"
    else: 
        message = winner.upper() + "won!" 
    if draw: 
        message = 'Game Draw!' 
    font = pg.font.Font(None, 30) 
    text = font.render(message, 1, (255, 255, 255)) 
    # 将呈现的消息复制到板上
    screen.fill ((0, 0, 0), (0、400、500、100)) 
    text_rect = text.get_rect(center=(width/2, 500-50)) 
    screen.blit(text, text_rect) 
    pg.display.update()

check_win()函数检查井字棋盘以查看“X”和“O”的所有标记。它计算玩家是否赢得了比赛。当玩家在一行、一列或对角线上连续标记 3 个标记时,他们可以获胜。每当我们在板上画一个标记“X”或“O”时,都会调用此函数。

def check_win():
    global TTT, winner,draw

    # 检查获胜行
    for row in range (0,3):
        if ((TTT [row][0] == TTT[row][1] == TTT[row][2]) and(TTT [row][0] is not None)):
            # this row won
            winner = TTT[row][0]
            pg.draw.line(screen, (250,0,0), (0, (row + 1)*height/3 -height/6),\
                              (width, (row + 1)*height/3 - height/6 ), 4)
            break

    # 检查获胜列
    for col in range (0, 3):
        if (TTT[0][col] == TTT[1][col] == TTT[2][col]) and (TTT[0][col] is not None):
            # 绘制获胜线
            winner = TTT[0][col]
            #draw winning line
            pg.draw.line (screen, (250,0,0),((col + 1)* width/3 - width/6, 0),\
                          ((col + 1)* width/3 - width/6, height), 4)
            break

    # 检查对角线赢家
    if (TTT[0][0] == TTT[1][1] == TTT[2][2]) and (TTT[0][0] is not None):
        # game won 对角线从左到右
        winner = TTT[0][0]
        pg.draw.line (screen, (250,70,70), (50, 50), (350, 350), 4)

    if (TTT[0][2] == TTT[1][1] == TTT[2][0]) and (TTT[0][2] is not None):
        # game won diagonally right to left
        winner = TTT[0][2]
        pg.draw.line (screen, (250,70,70), (350, 50), (50, 350), 4)

    if(all([all(row) for row in TTT]) and winner is None ):
        draw = True
    draw_status()

drawXO(row, col) 函数获取鼠标单击的行和列,然后绘制“X”或“O”标记。我们从绘制标记的 png 图像的位置计算起点的 x 和 y 坐标。

def drawXO(row,col):
    global TTT,XO
    if row==1:
        posx = 30
    if row==2:
        posx = width/3 + 30
    if row==3:
        posx = width/3*2 + 30

    if col==1:
        posy = 30
    if col==2:
        posy = height/3 + 30
    if col==3:
        posy = height/3*2 + 30
    TTT[row-1][col-1] = XO
    if(XO == 'x'):
        screen.blit(x_img,(posy,posx))
        XO= 'o'
    else:
        screen.blit(o_img,(posy,posx))
        XO= 'x'
    pg.display.update()
    #print(posx,posy)
    #print(TTT)

最后一个函数是 reset_game()。这将重新启动游戏,我们还将所有变量重置为游戏的开始。

def reset_game():
    global TTT, winner,XO, draw
    time.sleep(3)
    XO = 'x'
    draw = False
    game_opening()
    winner=None
    TTT = [[None]*3,[None]*3,[None]*3]

万岁!游戏已经完成,可以玩了。使用tictactoe.py文件名保存源代码并运行该文件。

用 Python 开发游戏——Python井字游戏

用 Python 开发游戏——Python井字游戏文章来源地址https://www.toymoban.com/news/detail-425902.html

到了这里,关于用 Python 开发游戏——Python井字游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 游戏开发:Python的游戏开发

    Python是一种流行的高级编程语言,它具有简洁的语法和易于学习。在过去的几年里,Python在游戏开发领域也取得了显著的进展。Python的强大库和框架使得开发者可以轻松地构建各种类型的游戏,从简单的文字游戏到复杂的3D游戏。 Python的游戏开发主要依赖于两个库:Pygame和

    2024年03月22日
    浏览(42)
  • python游戏开发入门经典教程,python游戏开发引擎

    大家好,给大家分享一下python游戏开发入门经典教程,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 消消乐小游戏相信大家都玩过,大人小孩都喜欢玩的一款小游戏,那么基于程序是如何实现的呢?今天带大家,用python+pygame来实现一下这个花里胡哨的消

    2024年02月02日
    浏览(45)
  • python游戏开发-SproutLand

    开发环境配置 安装好python环境后,下载pygame模块,使用如下命令下载 注:python版本选择不要过高,选择3.6到3.8版本范围即可 pygame项目快速搭建 以飞机大战游戏为例,快速上手pygame,首先创建游戏窗口 执行代码如图所示 在游戏窗口内贴图 用户输入控制贴图移动 SproutLand游戏

    2024年03月18日
    浏览(36)
  • Python游戏开发

    代码量 导包画图 起别名 坐标 抬笔与落笔 画笔大小 设置背景颜色 里面放16进制的颜色 小案例 前进 turtle.forward(200) 注意代码的优雅 数据类型 数组 type type 可以查看数据的类型 字符串 三引号 三引号可以在里面换行 双引号 双引号换行也可以换行,但是要添加换行符号 单引号

    2024年02月04日
    浏览(72)
  • Python游戏开发实战教程

    Python游戏开发实战教程 学习 Python 中的高级游戏编程 此视频教程共27.0小时,中英双语字幕,画质清晰无水印,源码附件全 课程英文名:Learn 10 Games using Python - 2021 下载地址 百度网盘地址:https://pan.baidu.com/s/1WuD09sjBSRnTNac6_kCUZA?pwd=by38 课程介绍:https://www.aihorizon.cn/91 课程内容

    2024年02月11日
    浏览(49)
  • Python 游戏开发与 Pygame

    第一章. Python 简介 Python 简介和历史 Python 特点和优势 安装 Python 第二章. 变量和数据类型 变量和标识符 基本数据类型:数字、字符串、布尔值等 字符串操作 列表、元组和字典 第三章. 控制语句和函数 分支结构:if/else 语句 循环结构:for 和 while 循环 函数 参数传递与返回值

    2024年04月17日
    浏览(51)
  • 想用 Python 写游戏,都有哪些好用的游戏开发库?

    虽然 Python 在网络爬虫、人工智能、数据分析方面有广泛应用,但它并不是一门专门做游戏开发的编程语言,不过对于小型的游戏开发,Python 还是挺香的。下面为大家介绍几个支持 Python 的 2D、3D 游戏开发库,使用它们,你可以设计出很多有意思的小游戏! Cocos2d 是一系列开

    2024年02月12日
    浏览(33)
  • 使用python开发“魂斗罗”游戏

    开发完整的魂斗罗(Contra)游戏是一个庞大的任务,它涉及到图形渲染、物理碰撞、敌人AI、游戏关卡等多个方面。在这个简短的交互中,我将向你展示一个基本的魂斗罗风格的游戏框架,你可以在此基础上进行扩展和完善。 首先,我们需要使用 Pygame 这个游戏开发库来创建

    2024年02月07日
    浏览(44)
  • python小游戏开发(飞机大战)

    目录 一:背景       1. pygame 模块初识 二.项目设计内容 开发一款飞机大战游戏,要求: (1)实现飞机的移动、子弹发射,对本次游戏有一个初步的编写及认识。 (2)飞机的持续按键移动和飞机自爆优化。 (3)进行基类的抽取,使代码更具有层次性和简化重复代码。 (

    2024年02月16日
    浏览(49)
  • Python星际生存小游戏开发

    项目名称:python星际生存游戏 编程语言:python 用到关键知识:pygame模块,面向对象思想,python基础等等 实现功能: 1:飞机的运动,发射子弹,飞机的生命值动态显示 2:太空中障碍物的无规则移动。障碍物的大小形态不一 3:背景音乐:发射子弹声音,飞机爆炸声音,中弹

    2024年02月06日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包