前提・実現したいこと
tkinterでランダムに動く障害物を躱すというゲーム?を作りたいのですが、実行しても動いてくれません、、
どうすれば良いのかアドバイスを頂けると助かります。
発生している問題・エラーメッセージ
Exception in Tkinter callback Traceback (most recent call last): File "//anaconda/lib/python3.5/tkinter/__init__.py", line 1550, in __call__ return self.func(*args) TypeError: up() takes 1 positional argument but 2 were given
該当のソースコード
Python3
1import tkinter as tk 2import random as r 3 4class Creater: 5 def __init__(self, x, y, size, color, tag): 6 self.x = x 7 self.y = y 8 self.size = size 9 self.color = color 10 self.tag = tag 11 self.body() 12 def body(self): 13 canvas.create_oval(self.x-self.size/2, self.y-self.size/2, self.x+self.size/2, self.y+self.size/2, fill=self.coCreater 14class Controller: 15 def __init__(self, tag): 16 self.tag = tag 17 18 def up(self): 19 canvas.move(self.tag, 0, -5) 20 def down(self): 21 canvas.move(self.tag, 0, 5) 22 def left(self): 23 canvas.move(self.tag, -5, 0) 24 def right(self): 25 canvas.move(self.tag, 5, 0) 26 27 def rand(self): 28 self.rand_x = r.randint(-20, 20) 29 self.rand_y = r.randint(-20, 20) 30 canvas.move(self.tag, self.rand_x, self.rand_y) 31 canvas.after(100, self.rand) 32 33root = tk.Tk() 34root.geometry("500x500") 35canvas = tk.Canvas(root, width=500, height=500, bg='white') 36canvas.pack() 37p01 = Creater(250, 250, 30, "red", "p01") 38enemy_size = 20 39x = r.randint(0+enemy_size, 500-enemy_size) 40y = r.randint(0+enemy_size, 500-enemy_size) 41e01 = Creater(x, y, enemy_size, "blue", "e01") 42move_p01 = Controller("p01") 43move_e01 = Controller("e01") 44move_e01.rand() 45root.bind("1", move_p01.up) 46root.bind("2", move_p01.down) 47root.bind("3", move_p01.left) 48root.bind("4", move_p01.right) 49 50root.mainloop() 51
おそらくだいぶ無駄の多いコードなので、もっとこうすると良いよというような助言も頂けると嬉しいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/18 06:23