91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Python如何實現有趣的象棋游戲

發布時間:2023-03-06 17:01:30 來源:億速云 閱讀:123 作者:iii 欄目:開發技術

本篇內容主要講解“基于Python如何實現有趣的象棋游戲”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“基于Python如何實現有趣的象棋游戲”吧!

一、游戲介紹

中國象棋游戲是一款怡神益智有益身心的游戲。象棋集文化、科學、藝術、競技于一身,不但可以開發智力,啟迪思維,鍛煉辨證分析能力和培養頑強的意志,而且可以修心養性,陶冶情操,豐富文化生活,趣味性極強。

棋盤桌上盡風流,廝殺幾曾休?妙手連珠,滴水不漏,談笑寫春秋。棋子紅黑兩分明,卻在混濁中。陰風陣陣,殺氣重重,逐鹿誰為雄?

二、游戲規則

游戲規則太長了,跟平常現實中旗子的走向一樣的,這里就不給大家一個一個解說了。大家可以自己直接百度一下就行。

三、環境準備

1)運行環境 

 開發環境:Python3、Pycharm社區版、Pygame,tkinter部分自帶的模塊安裝Python即可使用。

 2)模塊安裝 

 第三方庫的安裝方式如下:

 一般安裝:pip install +模塊名 

 鏡像源安裝:pip install -i pypi.douban.com/simple/+模塊名…

四、代碼展示

1)模塊導入

import pygame as pg
import sys
import tkinter as tk
from tkinter import *
import tkinter.filedialog,tkinter.messagebox
from threading import Thread
import time,os,re

2)主程序

def gettime():
    t=time.strftime('%Y%m%d%H%M%S',time.localtime())
    return t

def on_closing():
    if tkinter.messagebox.askokcancel("退出", "你確定要退出嗎?"):
        root.destroy()
        os._exit(1)

root = tk.Tk()
embed = tk.Frame(root, width = 900, height = 764) #creates embed frame for pygame window
embed.grid(columnspan = (600), rowspan = 500) # Adds grid
embed.pack(side = LEFT) #packs window to the left
root.title('中國象棋')
root.resizable(False,False)
root.protocol("WM_DELETE_WINDOW", on_closing)
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib'
#棋子65
filename=tkinter.StringVar()
countqipu=0
step=0
def openfile():
    global filename
    file=tkinter.filedialog.askopenfilename()
    filename.set(file)
    file_name=os.path.basename(file)
    compile=re.compile(r'\d{14}')
    content=compile.search(file_name)
    if content:
        restart()
        tkinter.messagebox.showinfo('提示', "載入棋譜成功")
    else:
        tkinter.messagebox.showerror('提示', "載入棋譜失敗")
def writeqipu():
    global countqipu
    if countqipu==0:
        with open('{}'.format(gettime()+'.txt'),'w') as f:
            f.write(str(selectlist)+'\n'+str(chesslist)+'\n'+str(value_list)+'\n'+str(ischizi_list)+'\n'+str(death_value))
            countqipu+=1

def upstep():
    global step,countqipu,running
    running=False
    if filename.get()!='':
        try:
            print('開始上一步')
            with open(filename.get(),'r') as f:
                info=f.readlines()
                for i,j in enumerate(info):
                    info[i]=j.replace('\n','')
            select_list=eval(info[0])
            chess_list=eval(info[1])
            valuelist=eval(info[2])
            ischizilist=eval(info[3])
            deathvalue_list=eval(info[4])
            countqipu+=1
            print(info)
            if step>0:
                selecttuple=select_list[step-1]
                chesstuple=chess_list[step-1]
                chessvalue=valuelist[step-1]
                czpd=ischizilist[step-1]
                deathvalue=deathvalue_list[step-1]
                if czpd:
                    list[chesstuple[0]][chesstuple[1]]=deathvalue
                    list[selecttuple[0]][selecttuple[1]] = chessvalue
                else:
                    list[chesstuple[0]][chesstuple[1]]=0
                    list[selecttuple[0]][selecttuple[1]] = chessvalue
                step -= 1
        except Exception as e:
            print(e)
    else:
        print('未載入棋譜')



def downstep():
    global step,countqipu,running
    running=False
    if filename.get() != '':
        print('開始下一步')
        try:
            with open(filename.get(),'r') as f:
                info=f.readlines()
                for i,j in enumerate(info):
                    info[i]=j.replace('\n','')
            select_list=eval(info[0])
            chess_list=eval(info[1])
            valuelist=eval(info[2])
            print(info)
            countqipu+=1
            print(step)
            # if running:
            step += 1
            if step>0:
                selecttuple=select_list[step-1]
                chesstuple=chess_list[step-1]
                chessvalue=valuelist[step-1]
                print(chessvalue,chesstuple[0],chesstuple[1])
                list[selecttuple[0]][selecttuple[1]]=0
                list[chesstuple[0]][chesstuple[1]]=chessvalue
        except Exception as e:
            print(e)
    else:
        print('未載入棋譜')

def auto():
    global step,countqipu,running
    running=False
    button2.config(state=tkinter.DISABLED)
    button3.config(state=tkinter.DISABLED)
    if filename.get() != '':
        # if running:
        try:
            print('開始下一步')
            with open(filename.get(),'r') as f:
                info=f.readlines()
                for i,j in enumerate(info):
                    info[i]=j.replace('\n','')
            select_list=eval(info[0])
            chess_list=eval(info[1])
            valuelist=eval(info[2])
            countqipu+=1
            step += 1
            if step>0:
                selecttuple=select_list[step-1]
                chesstuple=chess_list[step-1]
                chessvalue=valuelist[step-1]
                print(chessvalue,chesstuple[0],chesstuple[1])
                list[selecttuple[0]][selecttuple[1]]=0
                list[chesstuple[0]][chesstuple[1]]=chessvalue
            button4.after(1000, auto)
        except Exception as e:
            print(e)
    else:
        print('未載入棋譜')

到此,相信大家對“基于Python如何實現有趣的象棋游戲”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通榆县| 巴林右旗| 那曲县| 衡南县| 罗甸县| 原阳县| 巴东县| 赣榆县| 贵南县| 金阳县| 凤阳县| 正蓝旗| 镇巴县| 兰考县| 宾川县| 丹凤县| 洪雅县| 富裕县| 信宜市| 台北县| 金堂县| 太谷县| 永新县| 渑池县| 富宁县| 杂多县| 阿合奇县| 兰坪| 绿春县| 资中县| 高密市| 桂平市| 南陵县| 临城县| 水城县| 汉川市| 肇东市| 五家渠市| 昭通市| 柘荣县| 扬中市|