我试图用Python3.4创建自己的游戏GoFish版本(目前有两个玩家)。我的比赛有两个主要阶段。第一个问题是决定谁先采取行动。这是通过调用我的类FirstStage(file2.py)来完成的,它基本上是一个手游戏石头布剪刀-我对抗机器人。在我们有一个赢家之后,FirstStage返回一个整数(0或1),它代表这个阶段的赢家。然后第二阶段类(file3.py)被称为传递自我胜利者作为论据。游戏脚本被分割成许多文件,因为我使用了许多类。这是基本的想法,但出于某种原因,FistStage没有返回任何东西。有人能帮我吗?这是我的密码:
文件1.py
from file2 import *
from file3 import *
import tkinter as tk
class start_gui(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self,parent, *args, **kwargs)
# create canvas
self.canvas = tk.Canvas(parent, width=800, height=800, background="green")
self.canvas.pack()
# here we call FirstStage class to determine who starts first
self.c = FirstStage(parent)
self.winner = self.c.getwinner()
#here we call SecondStage call to start the real game
self.d = SecondStage(self.winner)
if __name__ == "__main__":
# create main window
root = tk.Tk()
root.geometry("800x800")
start_gui(root)
root.mainloop()
文件2.py
import tkinter as tk
from functools import partial
from PIL import ImageTk
from PIL import Image
class FirstStage(tk.Frame):
def __init__(self, canv):
tk.Frame.__init__(self, parent, background="black", padx=10, pady=10)
self.winner = 0
#here new frame is created
#buttons and images are place in a grid
self.rock_paper_scissors()
def rock_papper_scissors(self):
#here goes some code
#player against API
#undefine number of times until there is a winner
def close(self, w):
self.grid_forget()
self.destroy()
# here buttons, images and frame are destroy
# save winner
self.winner = w
def getwinner(self):
#return int - 0 for player and 1 for robot(opponent)
return self.winner
文件3.py
class SecondStage:
def __init__(self, winner)
#here goes some scripts
这是很长,所以我不能提供它作为一个评论。你知道吗
我按原样测试了您的代码(做了一些小的改动),并且
FirstStage
返回了正确的获胜者,目前它是0
或者您在self.winner = 0
中给出的任何值。你知道吗__init__
方法中有canv
,但传递了parent
到tk.Frame.__init__
。这给了我一个错误 参数不匹配,因此我将canv
更改为parent
。你知道吗rock_paper_scissors
的拼写__init__
方法中的方法调用不同,请检查 拼写。你知道吗close
方法中的self.winner
,但您提供的代码中没有调用该方法,因此self.winner
保持不变(值为0
)。你知道吗self.winner = self.c.getwinner()
后面放一个print
语句,您会发现获胜者是 确实回来了。你知道吗如果您做了这些更改,但仍然没有得到正确的获胜者,那么问题可能是您如何在
file2.py
中实现FirstStage
;这在问题中没有提供。你知道吗以下是我用于测试的代码:
文件1.py
文件2.py
文件3.py
相关问题 更多 >
编程相关推荐