午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化

pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化

熱門標簽:荊州云電銷機器人供應商 外呼不封號系統(tǒng) 悟空智電銷機器人6 電信營業(yè)廳400電話申請 江蘇房產(chǎn)電銷機器人廠家 遼寧400電話辦理多少錢 蘇州電銷機器人十大排行榜 溫州旅游地圖標注 幫人做地圖標注收費算詐騙嗎

一、前言

先說一下本期的目標。
首先我們在判斷出輸贏、平局的時候,只有一個控制臺輸出,很明顯不符合我們游戲的排面(doge
另外,之前的邏輯有一個漏洞,就是玩家一定是先手(就是第一個下棋的人,這個也需要修改)。
還有,有一個短暫的彈窗顯示到誰了,游戲的可玩性就會有提高。
最后一個就是,如果點擊位置有問題,我們需要顯示。

二、渲染問題

翻車了,之前的邏輯是將九宮格背景顏色寫死,而且之前都是直接在之前的基礎(chǔ)上渲染,但是我們的彈窗需要在結(jié)束后及時撤下來,所以需要我們不斷的重新渲染界面。

得,改吧。

首先,我們就不需要使用draw.rect方法創(chuàng)建矩形了,而是使用另外一個pygame.Rect函數(shù)。
同時,為了省去九行基本相同的代碼,我創(chuàng)建了一個元組來存儲。
格子創(chuàng)建最新版:

# 表示九個格子
rect = [0]*9
rect_wh = [
    (1,1), (single+3,1), (single*2+5,1), 
    (1,single+3), (single+3,single+3), (single*2+5,single+3),
    (1,single*2+5), (single+3,single*2+5), (single*2+5,single*2+5)
    ]
for i in range(len(rect)):
    rect[i] = pygame.Rect(*rect_wh[i],single,single)
    rect[i] = Lattice(rect[i],screen)

Rect函數(shù):
傳入x、y坐標以及高度寬度,就能創(chuàng)建一個rect對象。
這里需要解釋的是*rect_wh[i],后面的部分就是在元組列表中找到一個指定的元素,而星號的作用是將元組進行解封裝。

三、封裝和解封裝

a, b = 1, 2
首先,我們將后面的兩個變量封裝成一個元組,從而賦值給等號前面的部分;
而前面為兩個變量,所以我們還需要進行解封裝,也就是將一個元組拆分成一個個的變量。

當時記錄的筆記:

回到之前的格子問題,還有一個細節(jié)就是我們應該怎么顯示格子周圍的分割線,之前采用的是繪制矩形時自帶的,現(xiàn)在因為刷新的問題,不能再使用了(不然每刷新一次創(chuàng)建9個矩形并繪制,這誰頂?shù)米。?br /> 我的辦法是:減小了single的大小:

single = width/3 - 1

應該會注意到的,元組列表中我修改了(x,y)的值,這樣我們就能繪制出這樣的一個圖形:

(原創(chuàng)不易,整這個眼睛都快要瞎了,還是沒有很完美 -_-||)
bg_color = (0, 0, 0), 黑色。
我們還有個draw.rect方法,傳入screen,(255, 255, 255),rect對象,我們就可以顯示一個白色的矩形了。
因為寬高小了一點,所以我們就能看到很棒的邊界(比我自己畫的好多了)

(啊,為什么是黃色的啊,因為我把bg_color改了……,問題不大)

當前的update方法:

def update():
    screen.fill((255,228,181))
    for i in rect:
        pygame.draw.rect(screen,(255, 255, 255),i.rect)
        i.draw()

四、彈窗顯示

添加的彈窗:
輸贏、平局彈窗,3s后退出程序;
哪方下棋、下棋的位置有問題,0.3s后自己退出。

看過我大戰(zhàn)外星人系列應該知道,有一個很大的遺憾就是給定的button類有一點專用,導致我后來只能自己添加按鈕類。
這次,我自己寫的彈窗類的適用性會更高一些。

popup.py

"""在游戲過程中,添加各種彈窗"""
import pygame
class Popup():
    def __init__(self, screen,msg):
        self.msg = msg
        self.screen = screen
        self.bg_color = (0, 0, 0)
        self.text_color = (230, 230, 230)
        self.font = pygame.font.SysFont(None,48)
        self.msg_image = self.font.render(msg,True,self.text_color,self.bg_color)
        self.msg_rect = self.msg_image.get_rect()
        self.screen_rect = self.screen.get_rect()
        self.msg_rect.center = self.screen_rect.center
        self.screen.blit(self.msg_image,self.msg_rect)

傳入一個要顯示的信息,然后就可以渲染到屏幕上了。
方法都是之前的,看這篇博客。
(所以適用性高是不是因為基本上沒什么內(nèi)容……)

第一種情況(以平局為例):

Popup(screen,"draw")
pygame.display.flip()
time.sleep(3)
exit()

調(diào)用類(調(diào)用一次就完了,不需要再使用實例)
顯示屏幕
掛起三秒
退出程序

第二種情況下,我選擇"computer choice”作為案例,也就是輪到電腦操作:

Popup(srceeen,"computer choice”)
pygame.display.filp()
time.sleep(0.3)

但這樣,彈窗是不會自己消失的,所以我們還需要在后面跟一個update方法。

哦對了,還有一個沒有講怎么實現(xiàn)

五、實現(xiàn)判斷點擊是否有效

elif event.type == pygame.MOUSEBUTTONDOWN:
            mouse_x, mouse_y = pygame.mouse.get_pos()
            # 判斷玩家是否點擊成功
            success = 0
            for i in rect:
                if  not i.stats and i.rect.collidepoint(mouse_x,mouse_y):
                	# 如果點擊有效,將變量置為1

            if not success:
                update(0.3,"you can't choose here!")

六、update優(yōu)化

看了一下,基本上只有兩種情況,一個是正常的update,另一個是需要跟彈窗和延時。

def update(time_sleep=0,msg=""):
    screen.fill((255,228,181))
    for i in rect:
        pygame.draw.rect(screen,(255, 255, 255),i.rect)
        i.draw()
    if msg:
        Popup(screen,msg)
    pygame.display.flip()
    if time_sleep:
        time.sleep(time_sleep)

對于正常的刷新,只需要調(diào)用update(),如果是需要彈窗和延時的,就自己加變量來處理。

主循環(huán)部分:

while not judge:
    update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            mouse_x, mouse_y = pygame.mouse.get_pos()
            # 判斷玩家是否點擊成功
            success = 0
            for i in rect:
                # 確定玩家下了一步
                if  not i.stats and i.rect.collidepoint(mouse_x,mouse_y):
                    success = 1
                    # 玩家下棋
                    i.stats = -1
                    update()
                    win_or_lose()
                    # 電腦下棋
                    update(0.3,"Computer choice!")
                    computer()
                    update()
                    win_or_lose()
                    update(0.3,"your choice!")

            if not success:
                update(0.3,"you can't choose here!")

computer函數(shù)部分:

def computer():
    """電腦的回合,隨機生成一個位置"""
    global judge
    random_num = [i for i in range(len(rect)) if not rect[i].stats]
    # 沒位子下了,平局
    if not random_num:
        update(3,"draw")
        exit()
    rect[random.choice(random_num)].stats = 1

判斷輸贏部分:

def win_or_lose():
    global judge
    stats1 = [i for i in range(len(rect)) if rect[i].stats == 1]
    stats2 = [i for i in range(len(rect)) if rect[i].stats == -1]
    win_list = [
        [0, 1, 2], [3, 4, 5], [6, 7, 8],
        [0, 3, 6], [1, 4, 7], [2, 5, 8],
        [0, 4, 8], [2, 4, 6]
    ]
    for i in win_list:
        if i == [j for j in i if j in stats1]:
            update(3,"Computer win!")
            exit()
        elif i == [j for j in i if j in stats2]:
            update(3,"You win!")
            exit()

七、先手問題

這個,還是交給隨機數(shù)。
使用random.randint(0,1)產(chǎn)生一個0/1,來判斷先手,
如果先手是電腦,使用(0,8)選擇一個將其stats置為1
代碼:

def first_hand():
    """判斷先手,如果隨機數(shù)為1,則電腦先手"""
    x = random.randint(0,1)
    if x:
        x = random.randint(0,8)
        rect[x].stats = 1

循環(huán)開始前調(diào)用一下就行了。

八、結(jié)語

整體的游戲就實現(xiàn)了,很簡單的一個,卻能加深對pygame模塊的使用。

往期博客:
pygame實現(xiàn)井字棋——1.繪制九宮格
pygame實現(xiàn)井字棋——2.邏輯實現(xiàn)

到此這篇關(guān)于pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化的文章就介紹到這了,更多相關(guān)pygame井字棋游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)
  • pygame實現(xiàn)井字棋之第一步繪制九宮格
  • pygame可視化幸運大轉(zhuǎn)盤實現(xiàn)
  • pygame多種方式實現(xiàn)屏保操作(自動切換、鼠標切換、鍵盤切換)
  • 詳解pygame捕獲鍵盤事件的兩種方式
  • python+pygame實現(xiàn)代碼雨(黑客帝國既視感)
  • Pygame做一期吃豆子游戲的示例代碼
  • Python3+Pygame實現(xiàn)射擊游戲完整代碼

標簽:三沙 宿遷 喀什 臺灣 欽州 景德鎮(zhèn) 濟南 黃山

巨人網(wǎng)絡通訊聲明:本文標題《pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化》,本文關(guān)鍵詞  pygame,實現(xiàn),井字,棋之,第三步,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化》相關(guān)的同類信息!
  • 本頁收集關(guān)于pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国外成人在线播放| 久久se精品一区精品二区| 无码人妻一区二区三区在线视频| 动漫3d精品一区二区三区| 精品中文字幕久久久久久| 一区二区高清视频在线观看| 精品在线播放免费| 男人网站在线观看| 最新视频 - x88av| 美日韩丰满少妇在线观看| 色综合激情久久| 91色乱码一区二区三区| 亚洲欧美高清视频| japanese中文字幕| 女人另类性混交zo| 欧美大胆a视频| 丁香五六月婷婷久久激情| www.日韩大片| 日韩精品乱码av一区二区| 日韩成人免费观看| 国产精品无码无卡无需播放器| 日韩无套无码精品| 最新视频 - x88av| 欧美精品尤物在线| 欧美成人精品激情在线观看 | 国产精品美女久久久久av福利| 亚洲视频精品在线| 日本久久精品电影| 亚洲午夜久久久久中文字幕久| 91美女福利视频| 日韩精品电影在线观看| yjizz国产| 久久精品成人av| 亚洲成年人av| 奇米777在线视频| 亚洲免费视频播放| 亚洲日本japanese丝袜| 精品免费国产| 成人91视频| 亚洲tv在线观看| 成人国产精品色哟哟| 日韩免费高清在线观看| 欧美在线免费观看| 2018中文字幕一区二区三区| 在线观看欧美视频| 日韩在线免费视频| 久久在线观看视频| 久久久99免费视频| 尤物九九久久国产精品的分类 | 一区二区精品在线| 视频一区国产精品| a级网站在线观看| 免费在线看黄色片| 欧美精品一区二区三区三州| 日批视频在线免费看| 久久撸在线视频| 日韩精品人妻中文字幕有码| 久久精品一卡二卡| www.色天使| 黄色av免费播放| 美国美女黄色片| 中文字幕在线观看视频网站| 92久久精品一区二区| 午夜小视频在线播放| 加勒比av一区二区| 中文字幕免费不卡在线| 久久伊人蜜桃av一区二区| 亚洲精品欧美激情| 欧美猛男男办公室激情| 精品国产人成亚洲区| 色99之美女主播在线视频| 97在线免费观看视频| 国产精品免费在线播放| 男人的天堂avav| 九热视频在线观看| 久久久久亚洲AV成人无在| 成人涩涩小片视频日本| 午夜激情视频在线播放| 久久久久久无码精品大片| 亚洲女人18毛片水真多| 日本vs亚洲vs韩国一区三区二区| 免费观看在线色综合| 国产拍欧美日韩视频二区| 在线亚洲+欧美+日本专区| 91精品综合久久久久久| 久久精品人人爽| 国产精品丝袜久久久久久高清| 国产中文字幕亚洲| 正在播放国产精品| 午夜久久福利视频| 久久久99精品| 久久亚洲电影| 91超碰这里只有精品国产| 91精品国产高清久久久久久91| 日本一区二区精品| 亚洲一区二区三区四区五区xx| 先锋资源在线视频| 欧美日韩一级黄色片| 亚洲欧洲一区二区在线播放| 秋霞欧美在线观看| 国内精品免费在线观看| 久久精品免视看| 粉嫩av一区二区三区免费野| 日韩电影视频免费| 57pao成人国产永久免费| 欧美h视频在线| 穿情趣内衣被c到高潮视频| av天堂永久资源网| 国产一级视频在线| 国产乱人伦偷精品视频免下载| 欧美色播在线播放| 欧美激情视频网址| 精品综合在线| 国产精品偷伦视频免费观看了| 波多野结衣人妻| 国产视频视频一区| 亚洲男子天堂网| 欧美精品一区三区在线观看| 国产精品久久久久久在线观看| 91亚洲精品国偷拍自产在线观看 | 91国产在线播放| 91精品人妻一区二区三区蜜桃2| 国产麻豆免费视频| 亚洲一区二区精品久久av| 色综合久综合久久综合久鬼88| 亚洲欧美成人一区| 女同性恋一区二区三区| 天堂在线视频免费| 欧美三级在线看| 国产在线观看精品一区二区三区| 国产又爽又黄ai换脸| 国产视频久久久久久| 日韩中文字幕不卡| 91精品国产欧美一区二区| 91po在线观看91精品国产性色| 国产91在线免费| 国产又大又长又粗| 日韩欧美亚洲范冰冰与中字| 欧美大片免费观看| www日韩视频| 国产精品免费av一区二区| 国产精品电影院| 欧美洲成人男女午夜视频| 久久精品国产sm调教网站演员| 国产suv精品一区二区68| 久久久久久久久99精品| 欧美国产第二页| 日本a级片免费观看| 久久视频免费在线观看| 97精品国产露脸对白| 日韩av在线影院| 欧美精品尤物在线| 亚欧洲精品在线视频| 国产精品少妇自拍| 色与欲影视天天看综合网| 精品无码一区二区三区爱欲| 国产精品国产av| 91精品国产91综合久久蜜臀| 亚洲成人自拍| 日韩污视频在线观看| 亚洲精品欧美激情| 国产精品久久一区主播| 亚洲成人av免费在线观看| 93久久精品日日躁夜夜躁欧美 | 国产精品久99| 国产精品久久久久久久久久小说| 精品久久久久久中文字幕人妻最新| 在线观看视频一区二区 | 九九久久九九久久| 天天色图综合网| 亚洲一区二区三区四区av| 91福利区一区二区三区| 凹凸日日摸日日碰夜夜爽1| 久久在线91| 欧美精品视频www在线观看| 久久国产精品一区二区三区四区 | 五月天中文字幕| 亚洲欧美日韩精品| 人人妻人人藻人人爽欧美一区| 91国偷自产中文字幕久久| 欧美午夜精品久久久久久人妖| 精品一区二区三区自拍图片区| 91香蕉视频污在线观看| 亚洲国产精品久久久久婷婷884| 欧美精品尤物在线| 欧美日韩一级黄色片| 精品国产免费视频| 中文字幕色网站| www国产精品av| 国产精品美女久久久久av福利| 亚洲最大成人在线视频| 欧美成人艳星乳罩| 久久偷看各类wc女厕嘘嘘偷窃| 久久国产精品波多野结衣| 亚洲女性喷水在线观看一区| 亚洲xxxx在线| 91丨porny丨在线中文 | 精品综合久久久久久8888| 正在播放亚洲1区| 免费a级黄色片| 日韩欧美在线观看| 九一免费在线观看| 久久久久久久久久久网 | 日韩的一区二区| 亚洲精品一区二区18漫画| 一区二区三区欧美日韩| 影音先锋成人资源网站| 国产成人h网站| 国产精品成人观看视频免费| www.国产欧美| 日韩av免费在线观看| 91视频久久久| 久久影视电视剧免费网站清宫辞电视| 在线看的黄色网址| 一区二区三区**美女毛片| 日本视频一区二区不卡| 蜜臀av性久久久久蜜臀aⅴ| 国产精品自产拍在线观看| 国产一区二区视频免费观看 | 九一国产精品视频| 国产精品乱码人人做人人爱 | 2022亚洲天堂| 亚洲一区二区视频在线观看| 国产 福利 在线| 国产三级一区二区三区| 欧美日韩中文国产一区发布| 人妻无码中文字幕| 69久久夜色精品国产69乱青草 | 亚洲视频在线观看一区二区三区| 一区二区成人在线视频| 午夜免费看视频| 夜夜揉揉日日人人青青一国产精品| 日韩av电影免费观看| 99久久婷婷国产综合精品电影| 成人av免费看| 国产91综合一区在线观看| 亚洲国产日韩美| 亚洲欧洲日韩一区二区三区| 亚洲精品无人区| 中文字幕免费不卡在线| 黄色一级片av| 亚洲欧美另类综合偷拍| 亚洲一区二区蜜桃| 欧美三级xxx| jjzz黄色片| 欧美另类一区二区三区| 黑人と日本人の交わりビデオ| 日韩午夜在线影院| 亚洲国产精品久| 欧美成人一二三| 天天干,天天操,天天射| 精品欧美日韩| 国产91在线看| 久久久久亚洲av无码专区喷水| 亚洲欧美经典视频| 天天干天天综合| 亚洲成色777777女色窝| 无码人妻精品一区二区三区9厂| 韩国三级日本三级少妇99| 日韩国产欧美视频| japanese在线播放| 欧美天堂亚洲电影院在线播放| 久草网站在线观看| 欧美激情中文网| 亚洲高清视频网站| 亚洲午夜高清视频| 日韩欧美在线免费观看| 玖草视频在线观看| 亚洲视频在线观看视频| 国产婷婷在线视频| 亚洲一区bb| 精品视频1区2区| 亚洲成人av网址| 国产精品推荐精品| 国产色产综合色产在线视频| 天天操狠狠操夜夜操| 精品国产凹凸成av人导航| 一区二区视频免费| 日韩精品福利视频| 午夜精品成人在线视频| 亚洲欧美强伦一区二区| 欧美 日韩 国产 激情| 亚洲欧美激情一区| 麻豆免费看一区二区三区| 欧美日韩免费观看一区三区| 亚洲国产日韩欧美在线观看| 欧美成人精品一区二区三区| 国产精品白丝av| 日韩精品视频在线观看视频| 5858s免费视频成人| 国产三级伦理片| 黄页网站在线观看视频| 亚洲性猛交xxxxwww| 国产乱理伦片在线观看夜一区| 四虎国产精品永久免费观看视频| 久久男人资源视频| 欧美激情在线看| 久久久久久久久久久97| 快播亚洲色图| 亚洲国产中文字幕在线观看| 精品一区二区国语对白| 国产精品300页| 成人av蜜桃| 欧美不卡在线视频| 国产成人免费网站| 蜜桃无码一区二区三区| 精品综合久久久| 亚洲免费av片| 99视频一区二区| 九九视频在线免费观看| 丰满人妻一区二区三区53号| 亚洲人成电影网站| 中文字幕一区二区三区蜜月| 黄色在线视频网址| 爱福利视频一区二区| 456亚洲影院| 一本一道久久a久久精品 | 18欧美亚洲精品| 国产无套丰满白嫩对白| 欧美成人xxxxx| 日韩av免费在线看| 91精品国产综合久久久久久久久久| 日韩成人精品在线| 999精品久久久| 中文字幕剧情在线观看一区| 中文字幕欧美精品日韩中文字幕| 国产亚洲欧美一区在线观看| 日本欧美www| 肉丝美足丝袜一区二区三区四| 亚洲综合第一页| 亚洲欧美日韩天堂一区二区| 国产精品电影一区二区| 性欧美videos另类hd| 手机在线成人av| 亚洲一区二区三区涩| 韩国精品久久久999| 日韩一区二区视频| 欧美激情一区二区三区全黄 | 在线观看免费黄网站| 成人黄色生活片| 亚洲日本欧美中文幕| 亚洲一区二区三区四区不卡| 奇米色777欧美一区二区| 亚洲熟女www一区二区三区| 日本中文字幕高清| 久久精品国产美女| 97超级碰碰人国产在线观看| 欧美日韩国产精选| 91亚洲精品一区二区乱码| 国产乱叫456在线| 国产又粗又猛又爽又黄的视频小说| 久久综合色视频| 欧美日韩一区在线播放 | 欧美日韩精品在线视频| 国产精品一二三区| 波多野结衣电车| 久久日免费视频| 嫩草影院国产精品| 久久综合婷婷综合| 欧美做受高潮电影o| 最近更新的2019中文字幕 | 国产乱人伦真实精品视频| 中文字幕一区日韩电影| 欧美自拍偷拍一区| 亚洲欧洲精品一区二区三区| 国内一区二区在线| 亚洲第一色视频| 精品91久久久| 三级av在线免费观看| 欧美一级片黄色| 少妇黄色一级片| 成人短视频在线观看免费| 国产一区二区在线网站| 国产精品久久久久久av福利| 欧美乱妇40p| 亚洲欧美国产精品| 亚洲精品网站在线播放gif| 欧美三电影在线| 精品国产乱码久久久久久天美| 国产网站一区二区三区| 成人一区在线观看| 麻豆国产精品官网| 色呦呦中文字幕| 国产视频一二三四区| 中文字幕久久久久| av高清一区二区| 久久影视中文字幕| 久久久久久无码精品大片| 阿v天堂2014| 国产sm调教视频| 搡老熟女老女人一区二区| 久久午夜夜伦鲁鲁片| 午夜性福利视频| av天堂一区二区| 欧美成人久久久| 日韩欧美亚洲国产另类 | 亚洲一区 中文字幕| 亚洲国产天堂av| 欧美一区二区三区观看| 三级全黄做爰视频| 黄色三级视频在线播放| 国产福利精品一区二区三区| 日本黄色一级网站| 久久久久亚洲av片无码v| 黄色片子免费看| 亚洲热在线视频| 亚洲av毛片基地| 欧美日韩在线国产| 欧美精品一二三四区| 91 中文字幕|