国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用 Python 開發(fā)游戲——Python井字游戲

這篇具有很好參考價值的文章主要介紹了用 Python 開發(fā)游戲——Python井字游戲。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????大家好,我是Sonhhxg_柒,希望你看完之后,能對你有所幫助,不足請指正!共同學(xué)習(xí)交流??

??個人主頁-Sonhhxg_柒的博客_CSDN博客???

??歡迎各位→點贊?? + 收藏?? + 留言???

??系列專欄 - 機(jī)器學(xué)習(xí)【ML】?自然語言處理【NLP】? 深度學(xué)習(xí)【DL】

用 Python 開發(fā)游戲——Python井字游戲??

???foreword

?說明?本人講解主要包括Python、機(jī)器學(xué)習(xí)(ML)、深度學(xué)習(xí)(DL)、自然語言處理(NLP)等內(nèi)容。

如果你對這個系列感興趣的話,可以關(guān)注訂閱喲??

文章目錄

什么是井字游戲?

Python 井字游戲——項目詳情

先決條件

構(gòu)建 Python 井字游戲的步驟

1.初始化游戲組件

2.初始化Pygame窗口

3.加載和轉(zhuǎn)換圖像

4.定義函數(shù)


毫無疑問,你一定在學(xué)生時代玩過井字游戲,我們每個人都喜歡玩這款游戲。您會驚訝地發(fā)現(xiàn)井字游戲自古埃及時代就已存在。

通過 TechVidvan 的這個 Python 項目,我們將構(gòu)建一個交互式 Tic Tac Toe 游戲,我們將在此過程中學(xué)習(xí)新事物。

什么是井字游戲?

Tic Tac Toe 是玩得最多的游戲之一,也是最好的消磨時間的游戲,您可以在任何地方用筆和紙玩。如果您不知道如何玩這個游戲,請不要擔(dān)心,讓我們先了解一下。

游戲由兩個人玩。首先,我們畫一個 3×3 方格的棋盤。第一個玩家選擇“X”并將其繪制在任何方形網(wǎng)格上,然后第二個玩家有機(jī)會在可用空間上繪制“O”。像這樣,玩家在空白處交替繪制“X”和“O”,直到玩家成功地以水平、垂直或?qū)蔷€方式繪制 3 個連續(xù)標(biāo)記。然后玩家贏得游戲,否則當(dāng)所有位置都填滿時游戲平局。

用 Python 開發(fā)游戲——Python井字游戲

Python 井字游戲——項目詳情

有趣的 Python 項目將使用 pygame 庫構(gòu)建。我們將解釋該項目中使用的所有 pygame 對象方法。Pygame 是一個很棒的庫,它允許我們創(chuàng)建窗口并在窗口上繪制圖像和形狀。這樣我們將捕獲鼠標(biāo)坐標(biāo)并確定我們需要標(biāo)記“X”或“O”的塊。然后我們將檢查用戶是否贏得了比賽。

先決條件

為了實現(xiàn)這個游戲,我們將使用 Python 和 Pygame 的基本概念,Pygame 是一個用于構(gòu)建跨平臺游戲的 Python 庫。它包含計算機(jī)圖形和聲音庫所需的模塊。要安裝該庫,您可以從命令行使用 pip 安裝程序:

pip install pygame

構(gòu)建 Python 井字游戲的步驟

首先,讓我們檢查一下在 Python 中構(gòu)建 Tic Tac Toe 程序的步驟:

  • 為我們的游戲創(chuàng)建顯示窗口。
  • 在我們將玩井字游戲的畫布上繪制網(wǎng)格。
  • 在畫布下方繪制狀態(tài)欄,以顯示輪到哪個玩家以及誰贏得了游戲。
  • 當(dāng)有人贏得比賽或比賽平局時,我們將重置比賽。

我們需要在無限循環(huán)中運(yùn)行我們的游戲。它會不斷尋找事件,當(dāng)用戶在網(wǎng)格上按下鼠標(biāo)按鈕時,我們將首先獲取鼠標(biāo)的 X 和 Y 坐標(biāo)。然后我們將檢查用戶點擊了哪個方塊。然后我們將在畫布上繪制適當(dāng)?shù)摹癤”或“O”圖像。所以這基本上就是我們將在這個 Python 項目想法中做的事情。

1.初始化游戲組件

因此,讓我們從導(dǎo)入 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 創(chuàng)建一個新窗口,我們將在其中玩 Tic Tac Toe 游戲。所以我們用pg.init()方法初始化pygame?,設(shè)置窗口顯示寬度為400,高度為500。我們預(yù)留了100像素的空間用于顯示游戲狀態(tài)。

pg.display.set_mode?()初始化顯示,我們用 screen 變量引用它。每當(dāng)我們想在顯示器上畫東西時,都會使用這個屏幕變量。

pg.display.set_caption 方法用于設(shè)置將出現(xiàn)在顯示窗口頂部的名稱。

#初始化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.加載和轉(zhuǎn)換圖像

Python 項目使用了許多圖像,例如游戲開始或重置時將顯示的開場圖像。當(dāng)用戶點擊網(wǎng)格時我們將繪制的 X 和 O 圖像。我們加載所有圖像并調(diào)整它們的大小,以便它們很容易適合我們的窗口。

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

#調(diào)整圖像大小
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.定義函數(shù)

現(xiàn)在我們創(chuàng)建一個函數(shù)來啟動游戲。當(dāng)我們想要重新啟動游戲時,我們也會使用這個函數(shù)。在 pygame 中,blit()函數(shù)用于在表面上繪制一個圖像到另一個圖像之上。

所以我們繪制開場圖像,繪制之后,我們總是需要用pg.display.update()更新顯示。繪制開始圖像時,我們使用time.sleep(1)等待 1 秒,然后用白色填充屏幕。

接下來,我們在白色背景上繪制 2 條垂直線和水平線來制作 3×3 網(wǎng)格。最后,我們調(diào)用draw_status()函數(shù)

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?()函數(shù)繪制一個黑色矩形,我們在其中更新游戲狀態(tài),顯示輪到哪個玩家以及游戲是結(jié)束還是平局。

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)) 
    # 將呈現(xiàn)的消息復(fù)制到板上
    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()函數(shù)檢查井字棋盤以查看“X”和“O”的所有標(biāo)記。它計算玩家是否贏得了比賽。當(dāng)玩家在一行、一列或?qū)蔷€上連續(xù)標(biāo)記 3 個標(biāo)記時,他們可以獲勝。每當(dāng)我們在板上畫一個標(biāo)記“X”或“O”時,都會調(diào)用此函數(shù)。

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) 函數(shù)獲取鼠標(biāo)單擊的行和列,然后繪制“X”或“O”標(biāo)記。我們從繪制標(biāo)記的 png 圖像的位置計算起點的 x 和 y 坐標(biāo)。

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)

最后一個函數(shù)是 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]

萬歲!游戲已經(jīng)完成,可以玩了。使用tictactoe.py文件名保存源代碼并運(yùn)行該文件。

用 Python 開發(fā)游戲——Python井字游戲

用 Python 開發(fā)游戲——Python井字游戲文章來源地址http://www.zghlxwxcb.cn/news/detail-425902.html

到了這里,關(guān)于用 Python 開發(fā)游戲——Python井字游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 游戲開發(fā):Python的游戲開發(fā)

    Python是一種流行的高級編程語言,它具有簡潔的語法和易于學(xué)習(xí)。在過去的幾年里,Python在游戲開發(fā)領(lǐng)域也取得了顯著的進(jìn)展。Python的強(qiáng)大庫和框架使得開發(fā)者可以輕松地構(gòu)建各種類型的游戲,從簡單的文字游戲到復(fù)雜的3D游戲。 Python的游戲開發(fā)主要依賴于兩個庫:Pygame和

    2024年03月22日
    瀏覽(17)
  • python游戲開發(fā)入門經(jīng)典教程,python游戲開發(fā)引擎

    python游戲開發(fā)入門經(jīng)典教程,python游戲開發(fā)引擎

    大家好,給大家分享一下python游戲開發(fā)入門經(jīng)典教程,很多人還不知道這一點。下面詳細(xì)解釋一下?,F(xiàn)在讓我們來看看! 消消樂小游戲相信大家都玩過,大人小孩都喜歡玩的一款小游戲,那么基于程序是如何實現(xiàn)的呢?今天帶大家,用python+pygame來實現(xiàn)一下這個花里胡哨的消

    2024年02月02日
    瀏覽(22)
  • python游戲開發(fā)-SproutLand

    python游戲開發(fā)-SproutLand

    開發(fā)環(huán)境配置 安裝好python環(huán)境后,下載pygame模塊,使用如下命令下載 注:python版本選擇不要過高,選擇3.6到3.8版本范圍即可 pygame項目快速搭建 以飛機(jī)大戰(zhàn)游戲為例,快速上手pygame,首先創(chuàng)建游戲窗口 執(zhí)行代碼如圖所示 在游戲窗口內(nèi)貼圖 用戶輸入控制貼圖移動 SproutLand游戲

    2024年03月18日
    瀏覽(43)
  • Python游戲開發(fā)實戰(zhàn)教程

    Python游戲開發(fā)實戰(zhàn)教程

    Python游戲開發(fā)實戰(zhàn)教程 學(xué)習(xí) Python 中的高級游戲編程 此視頻教程共27.0小時,中英雙語字幕,畫質(zhì)清晰無水印,源碼附件全 課程英文名:Learn 10 Games using Python - 2021 下載地址 百度網(wǎng)盤地址:https://pan.baidu.com/s/1WuD09sjBSRnTNac6_kCUZA?pwd=by38 課程介紹:https://www.aihorizon.cn/91 課程內(nèi)容

    2024年02月11日
    瀏覽(25)
  • Python游戲開發(fā)

    Python游戲開發(fā)

    代碼量 導(dǎo)包畫圖 起別名 坐標(biāo) 抬筆與落筆 畫筆大小 設(shè)置背景顏色 里面放16進(jìn)制的顏色 小案例 前進(jìn) turtle.forward(200) 注意代碼的優(yōu)雅 數(shù)據(jù)類型 數(shù)組 type type 可以查看數(shù)據(jù)的類型 字符串 三引號 三引號可以在里面換行 雙引號 雙引號換行也可以換行,但是要添加換行符號 單引號

    2024年02月04日
    瀏覽(21)
  • Python 游戲開發(fā)與 Pygame

    第一章. Python 簡介 Python 簡介和歷史 Python 特點和優(yōu)勢 安裝 Python 第二章. 變量和數(shù)據(jù)類型 變量和標(biāo)識符 基本數(shù)據(jù)類型:數(shù)字、字符串、布爾值等 字符串操作 列表、元組和字典 第三章. 控制語句和函數(shù) 分支結(jié)構(gòu):if/else 語句 循環(huán)結(jié)構(gòu):for 和 while 循環(huán) 函數(shù) 參數(shù)傳遞與返回值

    2024年04月17日
    瀏覽(25)
  • 想用 Python 寫游戲,都有哪些好用的游戲開發(fā)庫?

    雖然 Python 在網(wǎng)絡(luò)爬蟲、人工智能、數(shù)據(jù)分析方面有廣泛應(yīng)用,但它并不是一門專門做游戲開發(fā)的編程語言,不過對于小型的游戲開發(fā),Python 還是挺香的。下面為大家介紹幾個支持 Python 的 2D、3D 游戲開發(fā)庫,使用它們,你可以設(shè)計出很多有意思的小游戲! Cocos2d 是一系列開

    2024年02月12日
    瀏覽(18)
  • python小游戲開發(fā)(飛機(jī)大戰(zhàn))

    python小游戲開發(fā)(飛機(jī)大戰(zhàn))

    目錄 一:背景? ? ?? 1. pygame 模塊初識 二.項目設(shè)計內(nèi)容 開發(fā)一款飛機(jī)大戰(zhàn)游戲,要求: (1)實現(xiàn)飛機(jī)的移動、子彈發(fā)射,對本次游戲有一個初步的編寫及認(rèn)識。 (2)飛機(jī)的持續(xù)按鍵移動和飛機(jī)自爆優(yōu)化。 (3)進(jìn)行基類的抽取,使代碼更具有層次性和簡化重復(fù)代碼。 (

    2024年02月16日
    瀏覽(27)
  • 開源的python 游戲開發(fā)庫介紹

    開源的python 游戲開發(fā)庫介紹

    ????????本文將為您詳細(xì)講解開源的 Python 游戲開發(fā)庫,以及它們的特點、區(qū)別和應(yīng)用場景。Python 社區(qū)提供了多種游戲開發(fā)庫,這些庫可以幫助您在 Python 應(yīng)用程序中實現(xiàn)游戲邏輯、圖形渲染、聲音處理等功能。 ?????? ??1. Pygame ????????特點 - 基于 Python 的游戲開發(fā)

    2024年03月22日
    瀏覽(14)
  • 使用python開發(fā)“魂斗羅”游戲

    使用python開發(fā)“魂斗羅”游戲

    開發(fā)完整的魂斗羅(Contra)游戲是一個龐大的任務(wù),它涉及到圖形渲染、物理碰撞、敵人AI、游戲關(guān)卡等多個方面。在這個簡短的交互中,我將向你展示一個基本的魂斗羅風(fēng)格的游戲框架,你可以在此基礎(chǔ)上進(jìn)行擴(kuò)展和完善。 首先,我們需要使用 Pygame 這個游戲開發(fā)庫來創(chuàng)建

    2024年02月07日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包