您好,登錄后才能下訂單哦!
本篇內容主要講解“基于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如何實現有趣的象棋游戲”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。