【问题标题】:Can't call up more than one item from function不能从函数中调用多个项目
【发布时间】:2017-04-10 17:48:06
【问题描述】:

我正在创建一个类似于 atari 游戏的游戏;杆位。我试图弄清楚每次有人越过起跑线时如何让随机汽车出现。我在呼叫不止一辆随机汽车时遇到问题。我没有收到错误消息。下面是我的代码。 (如果您对如何让汽车特别出现在赛道上有任何建议,那也会有所帮助)我是编程的初学者,并且仍在努力解决。感谢您的任何建议。

import random
import time
class Game:
    def __init__(self):
            self.tk = Tk()
            self.tk.title("Car Game")
            self.tk.resizable(0, 0)
            self.tk.wm_attributes("-topmost", 1)
            self.canvas = Canvas(self.tk, width=1280, height=750,  bd=0, highlightthickness=0)
            self.canvas.pack()
            self.tk.update()
            self.bg = PhotoImage(file="road.gif")
            self.canvas.create_image(0, 0, image=self.bg, anchor='nw')


    def your_car_sprite(self):
        self.yourCar = PhotoImage(file="carForgame.gif")
        self.canvas.create_image(850,570,image=self.yourCar, anchor='nw')

    def random_cars_sprite(self):
        x = random.randint(0,1280)
        y = random.randint(0,750)
        self.randomCar = PhotoImage(file='Car2.gif')
        self.canvas.create_image(x, y, image=self.randomCar, anchor='nw')
        for i in range(1,5):
            self.canvas.create_image(x, y, image=self.randomCar, anchor='nw')

    def mainloop(self):    
        while 1:
            self.tk.update_idletasks()
            self.tk.update()
            time.sleep(0.01)



g = Game()
g.your_car_sprite()
rCars = g.random_cars_sprite()
main = mainloop()

【问题讨论】:

  • 为什么要编写自己的mainloop 方法?会比只调用 tkinter 提供的mainloop 方法效率低。
  • 你能解释一下如何调用我自己的 mainloop 函数吗?
  • 我没有看到任何起始行的代码,或者我看到任何移动对象的代码。
  • 我还没有走到那一步。在我走得更远之前,我只是想把汽车放在画布上。
  • Game 类内调用self.tk.mainloop(),或在类外调用g.tk.mainloop()

标签: tkinter python-3.5


【解决方案1】:

我看到你的随机汽车不会出现的 2 个原因:

  • 首先,您只定义了一次随机位置,因此所有随机车辆都会出现在彼此的顶部。
  • 其次,在使用PhotoImage 时,必须保留对每个不同图像的引用(参见this answerthe documentation

以下是您可以解决的方法:

def random_cars_sprite(self):
    self.randomCars = []
    for i in range(1,5):
        x = random.randint(0,1280)
        y = random.randint(0,750)
        randomCar = PhotoImage(file=os.path.join(folder, "purple.png"))
        self.canvas.create_image(x, y, image=randomCar, anchor='nw')
        self.randomCars.append(randomCar)

【讨论】:

    猜你喜欢
    • 2015-05-28
    • 2019-08-26
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多