成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)

pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)

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

一、前言

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

二、下棋

2.1 玩家

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

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

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

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模塊主要是負責(zé)游戲中的事件。
第一個事件表示點擊界面的右上角關(guān)閉鍵,退出程序;
第二個事件是鼠標點擊,可以使用pygame.mouse.get_pos得到點擊位置。
因為之前的格子(Lattice類)中有一個rect類的實例,我們可以使用collidepoint函數(shù),傳入坐標判斷是在哪個格子中。
隨后我們需要判斷格子有沒有被占用,沒被占用,那么我們就可以修改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函數(shù),在列表中選擇一個元素(這個元素為Lattice類的實例),將其stats修改為1。

judge這個,是判斷是否結(jié)束游戲的標志,初始為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列表中查找,如果都能找到,列表解析式的結(jié)果就一定和原先的獲勝組合相同,此時我們就可以判斷一方獲勝。

四、一人一子

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

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

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

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

五、顯示問題

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

渲染文字的步驟:

  • self.font = pygame.font.SysFont設(shè)置字體
  • self.font.render函數(shù),生成一個含有文本信息的圖像
  • 將圖像使用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)
        # 設(shè)置字體
        self.font = pygame.font.SysFont(None,48)

    def draw(self):
        # 按照狀態(tài)賦值文本信息
        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函數(shù):
傳入?yún)?shù):文本信息,Boolean(控制曲線是否光滑,沒試過),文本顏色,背景顏色(也就是我們screen渲染的顏色)
返回一個圖片類型。

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

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

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

在主模塊中:

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

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

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

六、結(jié)語

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

下一篇:pygame實現(xiàn)井字棋——3.邏輯優(yōu)化
上一篇:pygame實現(xiàn)井字棋——1.繪制九宮格

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)》,本文關(guān)鍵詞  pygame,實現(xiàn),井字,棋之,第,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    丰满的少妇愉情hd高清果冻传媒| 粉嫩aⅴ一区二区三区四区五区| 亚洲va韩国va欧美va精四季| 国内精品麻豆| 久久久精品人妻一区二区三区| 最新热久久免费视频| 日日躁夜夜躁白天躁晚上躁91| 欧美亚洲一区二区在线| 欧美天堂一区二区三区| 免费日韩视频在线观看| 国产高潮在线观看| 免费在线观看一区二区| 中文字幕一区二区三区蜜月| 欧美一区二区色| 欧美黄色片在线观看| 精品美女在线观看视频在线观看| 午夜精品久久久久久久99老熟妇| av网站免费看| 国产精品国产三级国产aⅴ9色| www插插插无码免费视频网站| 国产一区久久精品| 91xxxxx| 91亚洲国产成人精品一区| 成人av免费看| 在线视频 中文字幕| 黄页视频在线播放| 欧美成欧美va| 四虎影视精品成人| 国产一区二区三区成人欧美日韩在线观看| 日韩精品在线一区二区三区| 久久网中文字幕| 日韩av电影免费观看高清| 欧美极品色图| 中文在线视频| 亚洲精品美女91| 久久久777精品电影网影网| 蜜桃久久久久| 中文字幕第22页| 国内精品久久久| 欧美黄色性视频| 欧美日韩在线视频免费观看| 稀缺呦国内精品呦| 一级特级黄色片| gv天堂gv无码男同在线观看| 中国大陆高清aⅴ毛片| www精品国产| 日韩伦理在线电影| 国产91丝袜在线播放| 国产精品久久久久影视| 一级黄色免费视频| 久久久久久97| 香蕉久久国产av一区二区| 欧美激情按摩在线| 欧美视频免费在线| 无码人中文字幕| 久久99久久| 欧美高清你懂的| 欧洲国产伦久久久久久久| 天天看天天干| 污视频在线看操| 成人av无码一区二区三区| 性直播在线观看| 91欧美在线视频| 亚洲视频在线观看免费视频| 亚洲欧美一区二区三区四区| 日韩在线导航| 天堂中文在线8| 91干在线观看| 人妻丰满熟妇av无码久久洗澡| 久久精品一区二区三区四区| 日本欧美韩国| 国产精品免费一区二区三区| 91电影在线| 91久久国产自产拍夜夜嗨| 国产jk精品白丝av在线观看| 亚洲国产高清在线观看视频| 免费无码不卡视频在线观看| 欧美日韩一区二区三区在线视频| 久久精品夜色噜噜亚洲a∨| 可以看美女隐私的网站| 久久躁狠狠躁夜夜爽| 欧美日韩不卡一区二区| 欧美午夜理伦三级在线观看| 一个人在线视频免费观看www| 国内精品久久久久影院色| 欧美成人在线免费观看| 女王人厕视频2ⅴk| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲福利视频一区| 午夜影视日本亚洲欧洲精品| 久久久久久久黄色| 亚洲一卡二卡在线| www成人在线视频| 欧美一级特黄aaa| 日本人dh亚洲人ⅹxx| 国产精品自产拍| 国模私拍在线观看| julia中文字幕久久亚洲蜜臀| 日韩视频在线观看国产| 欧美 日韩 中文字幕| 美女又爽又黄免费动漫| 成人免费看aa片| 一区二区三区午夜| 黄a大片av永久免费| 成人免费看吃奶视频网站| 国模吧视频一区| 黄色成年人视频在线观看| 乱人伦视频在线| 亚洲理论电影片| 人妖一区二区三区| 四虎成人欧美精品在永久在线| 国产在线日韩欧美| 欧美一级裸体视频| 国产成人精品实拍在线| 亚洲国产精品久久人人爱| 国产调教精品| 视频在线一区| 国产av无码专区亚洲av麻豆| 成人在线观看你懂的| 伦一区二区三区中文字幕v亚洲| 成人中文字幕在线观看| 在线观看中文字幕码| 精品欧美黑人一区二区三区| 日韩在线视频免费播放| 欧美中文字幕在线观看视频| 久久96国产精品久久99软件| 蜜臀av一区二区在线免费观看| 天堂影院一区二区| 日韩有码在线观看| 久久久久亚洲AV成人网人人小说| 91精品国产乱码久久久久久久久| 国产成人黄色片| 国产精品欧美精品| 亚洲午夜久久久久久久久| 精品国产第一福利网站| 视频一区不卡| 免费中文字幕在线观看| 国产精品久久婷婷| 午夜精品久久久久99蜜桃最新版| 懂色av蜜臀av粉嫩av永久| 国产精品一区二区三| 九九视频这里只有精品| 国内精品久久久久久影院老狼| 毛毛毛毛毛毛毛片123| 制服诱惑一区二区| 午夜精品偷拍| 亚洲精品123区| 麻豆md0077饥渴少妇| 久久网站免费观看| 国产免费黄色av| 国产欧美视频一区二区| 精品欧美一区二区在线观看视频| 国模 一区 二区 三区| 国产经典欧美精品| av资源在线看| www.夜夜操.com| 91精品尤物| 91精品啪在线观看国产18| 国产免费黄色片| 波多野结衣理论片| 亚洲美女免费在线| 国产精品一区二区免费不卡| 欧美久久精品午夜青青大伊人| 久久99精品久久久久久久青青日本| www.欧美色图| 国产欧美日韩在线播放| 最近中文字幕第一页| 鬼打鬼之黄金道士1992林正英| 九九热精品在线| 色综合色综合| 蜜臀91精品一区二区三区| 欧美aaaaa性bbbbb小妇| 四虎国产精品成人免费影视| 素人啪啪色综合| 亚洲精一区二区三区| 久久综合加勒比| 中文字幕人妻精品一区| 日韩电影在线观看完整免费观看| 亚洲专区在线| 一区二区三区欧美在线观看| 亚洲欧美在线x视频| 久久这里只有精品6| 人妻精品无码一区二区三区| 国产精品视频1区| 蜜桃视频www网站在线观看| 中文字幕第21页| 欧美一区三区三区高中清蜜桃| 天堂午夜在线| 日本 国产 欧美色综合| 三级在线观看一区二区| 国产九九在线视频| 免费网站在线高清观看| 国产高清在线观看| 艳妇荡乳欲伦69影片| 成人在线视频亚洲| 久久久久一区二区三区四区| 国产调教打屁股xxxx网站| 国产麻豆乱码精品一区二区三区| 欧美在线视频在线播放完整版免费观看| 26uuu国产一区二区三区| 久久久亚洲国产天美传媒修理工| 精品偷拍各种wc美女嘘嘘| 91麻豆精品国产91久久久久推荐资源| www日本在线观看| 国产欧美一区二区三区在线看蜜臂| 日本成a人片在线观看| 一区二区中文字幕在线观看| 好看的日韩精品视频在线| 激情乱色小说视频| 91蝌蚪porny成人天涯| 嫩草在线播放| 日本成人片在线| 你懂的在线观看视频网站| 16—17女人毛片毛片| 麻豆精品久久久| 日韩经典在线视频| 日本福利专区在线观看| 国产人妻精品一区二区三| 日韩国产一区久久| 九九热免费在线| 亚洲精品福利| 国产精品扒开腿做爽爽爽视频| 久久午夜夜伦鲁鲁一区二区| 久久久精品一品道一区| 亚洲三级毛片| 亚洲国产精品精华液网站| 久久综合给合| 精品日本一区二区| 日韩av中文字幕在线播放| 久久精品国产精品亚洲精品| 成年片费网站色大全免费视频| 小说区图片区综合久久亚洲| 香蕉免费一区二区三区在线观看| 国产 欧美 日韩 一区| 国产精品7777777| 国产一级特黄a大片99| 国产1区2区3区在线| 日本福利视频| 亚洲电影一区二区| 亚洲综合在线做性| 热久久精品国产| 中文字幕久精品免费视频| 91老师片黄在线观看| 伊伊综合在线| 久久日一线二线三线suv| 久久人人爽人人爽人人| 黄色国产精品一区二区三区| 欧美h片在线观看| 精品久久ai电影| 国产乱论精品| 制服.丝袜.亚洲.中文.综合懂色| 四虎国产成人免费观看| 日韩午夜激情视频| 天堂久久一区二区三区| 手机亚洲第一页| 成人xxxxx| 国产在线高清理伦片a| 97视频com| 国产麻豆视频在线观看| 拍拍拍无挡免费播放视频在线观看| 亚洲精品激情视频| 99在线观看免费视频精品观看| 综合久久综合久久| 老头老太做爰xxx视频| 色多多国产成人永久免费网站| 久久99国产精品久久久久久久久| 里番精品3d一二三区| 国产z一区二区三区| 亚洲欧美日韩国产一区| 久久不射影院| 国产精品视频男人的天堂| 欧美一区二区三区视频在线观看| 三上悠亚作品在线观看| 久久久久久激情| 国产日韩欧美一区二区三区综合| 美女胸又www又黄的网站| 亚洲一区二区三区涩| 欧美日韩精品一区二区三区在线观看| 欧美三级电影一区二区三区| 四虎国产精品永久免费观看视频| 加勒比色老久久爱综合网| 欧美性大战久久| 日韩午夜激情电影| 国产欧美日韩在线一区二区| 色综合www| 九色视频网站在线观看| 国产亚洲人成网站在线观看| 国产午夜精品一区理论片飘花| 成人久久一区二区| 亚洲黄网站在线观看| 国产精品久久毛片av大全日韩| 精品日本一线二线三线不卡| 日韩午夜视频在线| 日本裸体美女视频| 超碰在线首页| 麻豆免费看一区二区三区| 91在线视频免费| 不卡一卡2卡3卡4卡精品在| 久久久久久久亚洲| 中文字幕黄色大片| 四虎成人精品免费影院| 五月天激情开心网| 午夜精品一区二区三区在线观看| 国产模特av私拍大尺度| 精品少妇一区二区三区视频免付费| 九色91在线视频| 91午夜视频在线观看| 日韩精品无码一区二区三区免费| 91精品国产91久久久久久三级| 国产永久在线观看| 欧美亚洲日本在线| 超碰一区二区三区| 日韩成人网免费视频| 欧洲成人午夜精品无码区久久| 久久综合中文色婷婷| 国内自拍视频一区| 亚洲跨种族黑人xxx| 亚洲天堂电影在线观看| 久久久久国产精品免费免费搜索| 999这里只有精品| 成人av免费电影网站| 欧美激情一区二区三区成人| www免费在线观看视频| 9797在线看片亚洲精品| 少妇被狂c下部羞羞漫画| 一女被多男玩喷潮视频| 日韩中文综合网| 亚洲国产欧美久久|