| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#源代码 
from tkinter import* 
import random 
import time 
 
class Ball: 
    def _init_(self,canvas,paddle,color): 
        self.canvas=canvas 
        self.paddle=paddle 
        self.id=canvas.creat_oval(10,10,25,25,fill=color) 
        self.canvas.move(self.id,245,100) 
        starts=[-3,-2,-1,1,2,3] 
        random.shuffle(starts) 
        self.x=starts[0] 
        self.y=-3 
        self.canvas_height=self.canvas.winfo_height() 
        self.canvas_width=self.canvas.winfo_width() 
        self.hit_bottom=False 
    def hit_paddle(self,pos): 
        paddle_pos=self.canvas.coords(self.paddle.id) 
        if pos[2]>=paddle_pos[0] and pos[0]<=paddle_[2]: 
            if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]: 
                return True 
            return Fales 
    def draw(self): 
        self.canvas.move(self.id,self.x,self.y) 
        pos=self.canvas.coords(self.id) 
        if pos[1]<=0: 
            self.y=3 
        if pos[3]>=self.canvas_height: 
            self.hit_bottlm=True 
        if self.hit_paddle(pos)==True: 
            self.y=-3 
        if pos[0]<=0: 
            self.x=3 
        if pos[2]>=self.canvas_width: 
            self.x=-3 
             
class Paddle: 
    def _init_(self,canvas,color): 
        self.canvas=canvas 
        self.id=canvas.creat_rectangle(0,0,100,10,fill=color) 
        self.canvas.move(self.id,200,300) 
        self.x=0 
        self.canvas_width=self.canvas.winfo_width() 
        self.canvas.bind_all('<KeyPress-Left>',self.turn_left) 
        self.canvas.bind_all('<KeyPress-Right>',self.turn_right) 
 
    def draw(self): 
        self.canvas.move(self.id,self.x,0) 
        pos=self.canvas.coords(self.id) 
        if pos[0]<=0: 
            self.x=0 
        elif pos[2]>=self.canvas_width: 
            self.x=0 
 
    def turn_left(self,evt): 
        self.x=-2 
 
    def turn_right(self,evt): 
        self.x=2 
tk=Tk() 
tk.title("Game") 
tk.resizable(0,0) 
tk.wm_attributes("-topmost",1) 
canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0) 
canvas.pack() 
tk.update() 
 
paddle=Paddle(canvas,'blue') 
ball=Ball(canvas,paddle,'red') 
 
while 1: 
    if ball.hit_bottom==False: 
        ball.draw() 
        paddle.draw() 
    tk.update_idletasks() 
    tk.update() 
    time.sleep(0.01) 
 #错误:================== RESTART: D:\learn\python\execise\1.9.py ================== 
Traceback (most recent call last): 
  File "D:\learn\python\execise\1.9.py", line 69, in <module> 
    paddle=Paddle(self,canvas,'blue') 
NameError: name 'self' is not defined 
最近学的有点头大,求大神帮忙看一下问题怎么解决, 
         
         
首先两个类的init都是前后双下划线。 
create错写成creat了 
False错写成Fales了 
if pos[2]>=paddle_pos[0] and pos[0]<=paddle_[2]中paddle_[2]应为paddle_pos[2] 
还有一些小错误,你再看看。 
 
 
 
 |   
 
 
 
 |