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

主頁 > 知識庫 > pygame實現井字棋之第二步邏輯實現

pygame實現井字棋之第二步邏輯實現

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

一、前言

我們在上一篇博客中實現了九宮格的繪制,為我們打下了基礎。
這次我們來實現基本的邏輯,比如判斷輸贏、玩家和電腦分別下棋的邏輯。

二、下棋

2.1 玩家

我們之前在Lattice類中,有一個stats變量來表示格子的狀態,

# 0表示初始,1表示個人-1表示電腦
self.stats = 0

所以下棋本質上就是修改這個變量。
首先,我們是用鼠標點擊的方式來實現下棋的,所以應當修改事件響應部分:

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()
            for i in rect:
                # 確定玩家下了一步
                if  not i.stats and i.rect.collidepoint(mouse_x,mouse_y):
                	i.stats = -1

pygame.event模塊主要是負責游戲中的事件。
第一個事件表示點擊界面的右上角關閉鍵,退出程序;
第二個事件是鼠標點擊,可以使用pygame.mouse.get_pos得到點擊位置。
因為之前的格子(Lattice類)中有一個rect類的實例,我們可以使用collidepoint函數,傳入坐標判斷是在哪個格子中。
隨后我們需要判斷格子有沒有被占用,沒被占用,那么我們就可以修改stats。

2.2 電腦

對于電腦來說,實際情況差不多,不過我們選擇了隨機生成的方式:

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

我們先給出了所有沒有被占用的格子,使用列表解析形成列表。
如果列表為空,沒位子下了,就說明平局(在每一次落子之后,都會有輸贏的判斷,后面再說);
反之,我們就用random.choice函數,在列表中選擇一個元素(這個元素為Lattice類的實例),將其stats修改為1。

judge這個,是判斷是否結束游戲的標志,初始為0。

三、輸贏判斷

這個可能會麻煩一點。
這里,我的想法是每一個格子都有一個下標,將所有可能贏的格子組合的下標都寫出來。

 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]
    ]

隨后,我們同樣使用列表解析,將所有stats為1和-1的組成兩個列表:

 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]

那么問題來了,stats1、2中,可能只有部分元素在win_list中,瞬間找到了被leecode支配的恐懼。

 for i in win_list:
    	# 取出每一個可能獲勝的條件
        if i == [j for j in i if j in stats1]:
            judge = 1
            print("Computer win!")
            exit()
        elif i == [j for j in i if j in stats2]:
            judge = 1
            print("You win!")
            exit()

我們的邏輯是對每一個獲勝可能組合,分別取出每一個元素,并在stats列表中查找,如果都能找到,列表解析式的結果就一定和原先的獲勝組合相同,此時我們就可以判斷一方獲勝。

四、一人一子

井字棋和五子棋的玩法差不多,所以必須做到在玩家下子后,電腦能下子。
(正常電腦的反應,可是比玩家快多了。

當然可以設置一個變量,0、1分別表示誰該下子了,但是我有更好的選擇——在玩家下子后進行輸出。

if  not i.stats and i.rect.collidepoint(mouse_x,mouse_y):
# 玩家下棋
i.stats = -1
win_or_lose()
# 電腦下棋
computer()
win_or_lose()

還有一個問題,就是不管哪方下子了,我們都需要對輸贏進行判斷。

五、顯示問題

當你完成了上述操作,會發現,其實屏幕上什么都看不到。
因為我們還沒有顯示格子的圖標。
這里我選擇使用經典的'x'、‘o',用渲染文字的方式實現。(這部分也可以自己找圖貼上去)

渲染文字的步驟:

  • self.font = pygame.font.SysFont設置字體
  • self.font.render函數,生成一個含有文本信息的圖像
  • 將圖像使用get_rect方法處理成矩形,進行對齊
  • 使用blit方法渲染

lattice.py文件:

import pygame
class Lattice():
    def __init__(self,rect,screen):
        self.rect = rect
        self.screen = screen
        # 0表示初始,1表示個人-1表示電腦
        self.stats = 0
        # 文本顏色
        self.text_color = (30, 30, 30)
        # 背景顏色,也就是我們screen渲染的顏色
        self.bg_color = (255, 255, 255)
        # 設置字體
        self.font = pygame.font.SysFont(None,48)

    def draw(self):
        # 按照狀態賦值文本信息
        msg = ""
        if self.stats == -1:
            msg = "x"
        elif self.stats == 1:
            msg = "o"
        
        if msg:
            self.msg_image = self.font.render(msg,True,self.text_color,self.bg_color)
            self.msg_rect = self.msg_image.get_rect()
            self.msg_rect.center = self.rect.center
            self.screen.blit(self.msg_image,self.msg_rect)

render函數:
傳入參數:文本信息,Boolean(控制曲線是否光滑,沒試過),文本顏色,背景顏色(也就是我們screen渲染的顏色)
返回一個圖片類型。

get_rect()方法:
將圖片處理成矩形,pygame有一點很好,就是不管什么樣的圖形都能當成矩形處理

rect對象,有centerx、centery、x、y等一系列屬性,方便我們進行對齊操作,在這里不展開說了。

blit方法:
輸入圖片和矩形(這里的矩形實質上是給方法指明顯示的坐標),
在screen上顯示。

在主模塊中:

def update():
    for i in rect:
        i.draw()
    # 將界面顯示
    pygame.display.flip()

如果只是在while循環的開始寫一個update,會發現實際上我們是不能及時看到結果的,這樣很明顯有影響,所以在每一次落子之后,我們都會進行一次刷新,然后再判斷輸贏。

if  not i.stats and i.rect.collidepoint(mouse_x,mouse_y):
# 玩家下棋
i.stats = -1
update()
win_or_lose()
# 電腦下棋
computer()
update()
win_or_lose()

六、結語

這樣,我們這個井字棋基本上就可以玩了,但是我們還是需要進行一些修改。
下一篇博客,我將對細節進行整改。

下一篇:pygame實現井字棋——3.邏輯優化
上一篇:pygame實現井字棋——1.繪制九宮格

到此這篇關于pygame實現井字棋之第二步邏輯實現的文章就介紹到這了,更多相關pygame井字棋游戲內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

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

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

巨人網絡通訊聲明:本文標題《pygame實現井字棋之第二步邏輯實現》,本文關鍵詞  pygame,實現,井字,棋之,第,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pygame實現井字棋之第二步邏輯實現》相關的同類信息!
  • 本頁收集關于pygame實現井字棋之第二步邏輯實現的相關信息資訊供網民參考!
  • 推薦文章
    色91精品久久久久久久久| 亚洲欧洲av色图| 欧美—级a级欧美特级ar全黄| 男人操女人下面视频| 国产日韩欧美a| 精品无人区一区二区三区| 91国内精品久久久| 日韩在线观看网址| 91网站免费视频| 色偷偷久久人人79超碰人人澡| 国产人妻人伦精品| 久久99久久精品欧美| 国产精品av电影| 国产成人无码专区| 中文字幕av一区二区| 国产精品无码无卡无需播放器| 日韩欧美一区视频| 黄在线观看网站| 国产午夜精品福利| 亚洲午夜精品一区二区| 国产美女精品人人做人人爽| 91传媒在线免费观看| 国产日韩一级片| 欧美精品激情在线观看| 91视频免费网址| 在线观看亚洲视频| 亚洲一级生活片| 亚洲精品久久久久久下一站| 波多野结衣办公室33分钟| 91福利社在线观看| 永久免费看片在线观看| 疯狂欧美牲乱大交777| 国产精品视频一区二区三区四区五区 | 韩剧1988免费观看全集| 国产99免费视频| 欧美精品福利在线| 91丨九色丨丰满| 欧美在线激情网| 国产情侣一区二区| 国产精品免费福利| 日韩一区免费视频| 亚洲伊人久久综合| 久久电影网电视剧免费观看| 精品久久久久亚洲| 国产成人免费av在线| 欧美精品亚洲| www.66久久| 国产制服91一区二区三区制服| 久久久久久97三级| 伊人成色综合网| 亚洲第一福利一区| 国产精品19p| 7777精品伊人久久久大香线蕉的| 亚洲色图14p| 日韩精品一区二区三区第95| 免费在线观看亚洲| 国产69精品99久久久久久宅男| 国产精品国产av| 成人精品在线观看| 国产美女在线观看一区| 三年中国中文在线观看免费播放 | 亚洲制服丝袜av| 1314成人网| 精品奇米国产一区二区三区| 杨钰莹一级淫片aaaaaa播放| yw.139尤物在线精品视频| 免费又黄又爽又猛大片午夜| 国产成人一区二区三区电影| 日日夜夜精品免费视频| 欧美一区国产一区| 中文字幕第一区综合| 天天干天天干天天干天天干天天干| 91精品福利在线| 影音先锋男人看片资源| 欧美人与性动交a欧美精品| www.黄色片| 久久亚洲精品欧美| 中文字幕一区二区三区不卡在线| 亚洲美女动态图120秒| 成人免费播放视频| 亚洲欧美日韩国产中文专区| 国产精品传媒在线观看| av成人观看| 国产亚洲一二三区| 午夜福利123| 日韩黄色高清视频| 国产剧情精品在线| 欧美在线视频一区二区三区| 亚洲欧洲精品一区二区精品久久久| 久久久久久综合网| 亚洲欧洲激情在线| 精品久久无码中文字幕| 日本成人黄色免费看| 中文字幕一区二区在线观看| 久久久久99人妻一区二区三区| 亚洲欧美一区二区三区在线| 国产免费无遮挡| 日韩欧美亚洲日产国| 亚洲高清不卡在线观看| 国产喷水在线观看| 国产精品久久一| 久久综合给合久久狠狠狠97色69| 日韩av在线中文| 日韩激情第一页| 亚洲AV无码成人片在线观看| 色女人综合av| 欧美在线视频日韩| 久久久久亚洲av成人毛片韩| 成人自拍网站| 一区二区三区四区中文字幕| 午夜国产福利视频| 国产精品户外野外| 国产日韩精品一区| 亚洲国产av一区| 欧美一区二区色| 2023国产精品| 青青草福利视频| 日韩美女视频中文字幕| 久久久无码精品亚洲日韩按摩| 精品一区二区视频在线观看| 97视频在线观看播放| 99久久综合99久久综合网站| 国产a级黄色片| 欧美伊久线香蕉线新在线| 97se亚洲国产综合自在线不卡| 成人在线观看一区二区| 国内精品模特av私拍在线观看| 成人国产在线观看| 日本一区二区在线免费观看| 91av视频在线观看| 久久精品视频在线看| 国产91丝袜美女在线播放| 国产免费一区二区三区在线观看 | 国产精品成人无码| 老司机av福利| 亚洲精品大尺度| 人人超碰91尤物精品国产| 天天色综合社区| 欧美另类交人妖| 91在线丨porny丨国产| 欧美狂猛xxxxx乱大交3| 91久久精品美女高潮| 午夜精品久久久久久久久| 国产一级淫片a视频免费观看| 曰韩不卡视频| 亚洲毛茸茸少妇高潮呻吟| 久草在线在线精品观看| 黄色免费视频网站| 91九色在线视频| 色婷婷香蕉在线一区二区| 一卡二卡三卡在线观看| 日本精品免费在线观看| 欧美大片va欧美在线播放| 久久亚洲一区二区三区明星换脸| 五月婷婷综合激情网| 精品福利影视| 精品少妇一区二区三区| 狠狠网亚洲精品| 国精产品一区二区三区| 国产乱码精品一区二区三区中文| 宅男噜噜噜66一区二区66| 性插视频在线观看| 美女又黄又免费的视频| 91久久久亚洲精品| 欧美精品久久99久久在免费线 | 91高清免费看| 相泽南亚洲一区二区在线播放 | 欧美福利电影网| 亚洲国产视频一区二区三区| 天天看片天天操| 国产欧美精品在线播放| 色婷婷精品久久二区二区蜜臂av| 免费国产羞羞网站视频| 2018国产精品| 国产精品v欧美精品v日韩| 8v天堂国产在线一区二区| 蜜臀久久99精品久久久久久9 | 一本一道久久a久久精品| 可以免费观看的毛片| 挪威xxxx性hd极品| 精品国产一区二区三区麻豆免费观看完整版 | 一区二区三视频| 中文字幕在线精品| 亚洲色图视频网| 国产又粗又猛又爽| 乳色吐息在线观看| 美乳视频一区二区| 日韩在线观看免费全集电视剧网站 | 久久久久女人精品毛片九一| 日韩精品一区二区三区久久| 国产精品久久久久一区二区| 欧美妇女性影城| 99久久伊人久久99| 国产精品成人久久久| 久久综合桃花网| 麻豆av福利av久久av| 中文综合在线观看| 亚洲高清视频中文字幕| 热久久免费视频| 天天综合天天做| 国产日韩一区二区在线观看| 成人黄色免费片| 精品在线观看国产| 亚洲精品视频一区| 亚洲aⅴ乱码精品成人区| 免费成人美女女在线观看| 成人免费播放器| 成人高h视频在线| 亚洲黄色成人网| 中文字幕一区日韩精品欧美| 色丁香婷婷综合久久| 伊人影院综合网| 免费高清在线观看免费| 91手机在线播放| 精品国产一区二区三区久久久| 午夜精品影院在线观看| 精品一区二区三区av| 免费看一级视频| 亚洲中文字幕一区| 日韩欧美不卡在线| 91原创国产| 久久99热精品| 欧美一区二区日韩一区二区| 中文字幕精品在线不卡| 黑人乱码一区二区三区av| 老熟妻内射精品一区| 午夜免费看视频| 亚洲精品无人区| 国产欧美一区二区三区视频| 一区二区三区日韩在线| 欧美亚洲丝袜传媒另类| 国产亚洲综合在线| 日本不卡高清视频| 日韩免费av网站| 中文字幕在线观看免费高清| 国内外成人激情视频| 欧美一区1区三区3区公司 | 91女神在线视频| 免费观看黄色av| 91看片在线播放| 88久久精品无码一区二区毛片| 成人免费观看cn| 久久久水蜜桃| 国产精品第8页| 日韩资源在线观看| 日韩免费在线观看| 欧美日韩美女视频| 国产精品久久久久天堂| 国产精品中文字幕欧美| 亚洲精品第五页| 五月婷婷开心网| 天堂资源在线视频| 性感美女一区二区三区| 国产xxxxx在线观看| 午夜精品亚洲一区二区三区嫩草| 成人动漫网站在线观看| 午夜欧美大片免费观看| 国产一区二区久久精品| 隣の若妻さん波多野结衣| 男女污污的视频| 高清无码视频直接看| 久久99精品久久久久久久久久| 国产精品99久久久久久人| 欧美噜噜久久久xxx| 日韩成人在线视频| 91麻豆精品国产自产在线| 午夜在线电影亚洲一区| 中文字幕在线不卡国产视频| 99精品久久久久久| 国产精品99久久久久久久女警| 刘亦菲久久免费一区二区| 在线免费av网| 丁香社区五月天| 国产情侣自拍av| 国产小视频在线看| 人妻互换一区二区激情偷拍| 亚洲av成人片色在线观看高潮| 久久精品久久99| 午夜剧场高清版免费观看| 日韩av资源在线| 各处沟厕大尺度偷拍女厕嘘嘘| 伊人久久在线观看| 亚洲va韩国va欧美va精四季| 久久综合入口| 精品国产乱码久久久久软件| 韩国成人一区| 国产伦精品一区二区三区免| 亚洲a在线观看| 亚洲free性xxxx护士白浆| 国产精品久久久久久亚洲影视| 欧美一级成年大片在线观看 | 欧美亚洲免费在线一区| 亚洲午夜视频在线观看| 一区二区理论电影在线观看| 一区二区三区精密机械公司| 一区二区三区在线免费| 一区二区三区在线视频播放| 一区二区三区色| 亚洲国产欧美另类丝袜| 精品国产电影一区| 五月天亚洲婷婷| 日韩欧美国产网站| 欧美日韩国产综合一区二区 | 久久久99精品免费观看不卡| 国产色综合天天综合网| 国产精品网站在线播放| 国产丝袜视频一区| 一区二区三区四区免费观看| 中文字幕在线字幕中文| 1000精品久久久久久久久| 欧美大片在线看免费观看| 4438x全国最大成人| 成人自拍视频在线| 色婷婷久久av| 色呦色呦色精品| av亚洲精华国产精华精华| 免费不卡在线观看av| 亚洲三级在线视频| 久久久国产一区二区三区四区小说 | 国产污视频在线观看| 偷窥少妇高潮呻吟av久久免费| 国产精品区一区| 中文字幕制服诱惑| 亚洲成人a**站| 免费在线观看的毛片| 国产精品一区专区| 国产成人精品日本亚洲专区61| 欧美手机在线观看| 欧美日韩小视频| 日本中文字幕网址| 成人免费毛片片v| 91麻豆桃色免费看| 99视频在线观看免费| 日韩中文在线中文网三级| 噜噜噜在线视频| 亚洲日本欧美天堂| 99re99热| 久久亚区不卡日本| 狠狠色伊人亚洲综合网站色| 国产精品高潮呻吟AV无码| 中文字幕精品久久久久| 亚洲v国产v欧美v久久久久久| 亚洲综合区在线| 又大又硬又爽免费视频| 国产精品资源在线观看| 91aaaa| 日本女人一区二区三区| 国产精品久久久久久av福利软件| 日韩欧美亚洲视频| 最近中文字幕日韩精品| 日韩视频中文字幕在线观看| 亚洲国产成人在线视频| 亚欧洲乱码视频| 欧美一区二区不卡视频| 扒开伸进免费视频| 欧美色图第一页| 黄色aaa视频| 一个人www欧美| 欧美h在线观看| 欧美激情三级免费| 亚洲黄色a级片| 亚洲精品欧美日韩| 成人综合婷婷国产精品久久 | 99成人精品视频| 亚洲a在线播放| 久久久久99精品国产片| 国内外成人免费在线视频| 日韩小视频在线观看专区| 毛片基地在线观看| 91九色蝌蚪成人| 亚洲男人的天堂av| 欧美一区二区三区爽爽爽| 成人免费视频网址| 亚洲免费观看高清| 国产又色又爽又高潮免费| 97在线观看视频| 国产一区二区免费看| 亚欧激情乱码久久久久久久久| 亚洲精品大尺度| 亚洲av无码国产精品久久不卡| 麻豆中文字幕在线观看| 欧美伊人久久久久久久久影院| 日韩xxx高潮hd| 蜜桃视频在线观看成人| 欧美色欧美亚洲高清在线视频| 青青操免费在线视频| 国产乱码精品一区二区三区日韩精品| 久久这里都是精品| 麻豆精品国产传媒| 欧美另类xxx| 国产精品1区二区.| www.久久av.com| 欧美不卡视频一区发布| 狠狠躁日日躁夜夜躁av| 一区二区在线观看网站| 亚洲二区在线观看| 久久国产视频精品| 日韩一区国产在线观看| 五月天丁香久久| 日韩三级一区二区三区| 极品日韩久久| 欧洲亚洲国产日韩| 国内自拍视频在线播放| 精品一卡二卡三卡四卡日本乱码 | 7777女厕盗摄久久久| av免费在线观看不卡| 精品一二三四五区| 国产午夜精品一区二区三区| 国产很黄免费观看久久| 免费黄色三级网站|