テキストに載っているゲームプログラムミスタースティックマンのコードを途中まで書いて、画面上に床の図画がキャンバス全体に表示される結果になるはずですが、typeerrorとなり、
何も表示されません。間違いの箇所はどこか見直してもわからないので教えてください。
エラーの表示Traceback (most recent call last):
File "C:\Users\P\Desktop\stickman\sticmangame.py", line 102, in <module>
0, 480, 100, 10)
File "C:\Users\P\Desktop\stickman\sticmangame.py", line 64, in init
self.coordinates= Coords(x, y, x + width, y + height)
TypeError: Coords() takes no arguments
python3
1コードfrom tkinter import* 2import random 3import time 4 5class Coords: 6 def __int__(self, x1=0, y1=0, x2=0, y2=0): 7 self.x1=x1 8 self.y1=y1 9 self.x2=x2 10 self.y2=y2 11 def within_x(co1,co2): 12 if(col.x1>co2.x1 and col.x1<co2.x2)\ 13 or(co1.x2>co2.x1 and co1.x2<co2.x2)\ 14 or(co2.x1>co1.x1 and co2.x1<co1.x2)\ 15 or(xo2.x2>co1.x1 and co2.x2<col.x2): 16 return True 17 else: 18 return False 19 def within_y(co1,co2): 20 if(co1.y1> co2.y1 and co1.y1<co2.y2)\ 21 or(co1.y2>co2.y1 and co1.y2<co2.y2)\ 22 or(co2.y1>co1.y1 and co2.y1<co1.y2)\ 23 or(co2.y2>co1.y1 and co2.y2<co1.y2): 24 return True 25 else: 26 return False 27 28 def collided_left(co1, co2): 29 if within_y(co1, co2): 30 if co1.x1<=co2.x2 and co1.x1>=co2.x1: 31 return True 32 return Fasle 33 def collided_right(co1,co2): 34 if within_y(co1, co2): 35 if co1.x2>=co2.x1 and co1.x2 <=co2.x2: 36 return True 37 return False 38 def collided_top(co1, co2): 39 if within_x(co1,co2): 40 if co1.y1<=co2.y2 and co1.y1>-co2.y1: 41 return True 42 return False 43 def collided_bottom(y,co1,co2): 44 if within_x(co1, co2): 45 y_calc=co1.y2+y 46 if y_calc>=co2.y1 and y_calc<= co2.y2: 47 return True 48 return False 49class Sprite: 50 def __init__(self,game): 51 self.game=game 52 self.endgame=False 53 self.coordinates=None 54 def move(self): 55 pass 56 def coords(self): 57 return self.coordinates 58class PlatformSprite(Sprite): 59 def __init__(self, game, photo_image, x,y, width, height): 60 Sprite.__init__(self, game) 61 self.photo_image=photo_image 62 self.image=game.canvas.create_image(x, y, \ 63 image=self.photo_image, anchor='nw') 64 self.coordinates= Coords(x, y, x + width, y + height) 65 66 67class Game: 68 def __init__(self): 69 self.tk=Tk() 70 self.tk.title("Mr. Stick Man Races for the Exit") 71 self.tk.resizable(0,0) 72 self.tk.wm_attributes("-topmost",1) 73 self.canvas=Canvas(self.tk, width=500,height=500, \ 74 highlightthickness=0) 75 self.canvas.pack() 76 self.tk.update() 77 self.canvas_height=500 78 self.canvas_width=500 79 self.tk.update() 80 self.canvas_height=500 81 self.canvas_width=500 82 self.bg=PhotoImage(file="background.gif") 83 w=self.bg.width() 84 h=self.bg.height() 85 for x in range(0, 5): 86 for y in range(0, 5): 87 self.canvas.create_image(x*w,y*h,\ 88 image=self.bg, anchor='nw') 89 self.sprites=[] 90 self.running=True 91 92 def mainloop(self): 93 while 1: 94 if self.running==True: 95 for sprite in self.sprites: 96 sprite.move() 97 self.tk.update_idletasks() 98 self.tk.update() 99 time.sleep(0.01) 100g=Game() 101platform1=PlatformSprite(g, PhotoImage(file="platform1.gif"), \ 102 0, 480, 100, 10) 103platform2=PlatformSprite(g, PhotoImage(file="platform1.gif"),\ 104 150,440,100,10) 105platform3=PlatformSprite(g, PhotoImage(file="platform1.gif"),\ 106 300,400,100,10) 107platform4=PlateformSprite(g, PhotoImage(file="platform1.gif"),\ 108 300,160,100,10) 109platform5=PlateformSprite(g, PhotoImage(file="platform2.gif"),\ 110 175,350,66,10) 111platform6=PlateformSprite(g, PhotoImage(file="platform2.gif"),\ 112 50,300,66,10) 113platform7=PlateformSprite(g, PhotoImage(file="platform2.gif"),\ 114 170,120,66,10) 115platform8=PlateformSprite(g, PhotoImage(file="platform2.gif"),\ 116 45,60,66,10) 117platform9=PlateformSprite(g, PhotoImage(file="platform3.gif"),\ 118 170,250,32,10) 119platform10=PlateformSprite(g, PhotoImage(file="platform3.gif"),\ 120 250,200,32,10) 121g.sprites.append(platform1) 122g.sprites.append(platform2) 123g.sprites.append(platform3) 124g.sprites.append(platform4) 125g.sprites.append(platform5) 126g.sprites.append(platform6) 127g.sprites.append(platform7) 128g.sprites.append(platform8) 129g.sprites.append(platform9) 130g.sprites.append(platform10) 131g.mainloop() 132
過去、半角カタカナはUNIX/Linuxで文字化けし易かった経過があって、プログラミングの世界では半角カタカナは全角に訂正された方が宜しいかと。過去の質問も含めて。
回答1件
あなたの回答
tips
プレビュー