2013-05-13 89 views
0

注:我在编程方面真的很新颖。游戏中靠近Pong的难度(pygame)

起初,我只是要发布自己编写的代码:

import pygame 
import random 

pygame.init() 
screen = pygame.display.set_mode([640, 480]) 
paddle = pygame.image.load("pulgake.png") 
pygame.display.set_caption("PONG!") 
WHITE = [0, 0, 0] 

back = pygame.image.load("taust.png") 
screen.blit(back, (0, 0)) 
screen.blit(paddle, (600, 240)) 
pygame.display.flip() 

xpaddle = 600 
ypaddle = 240 

delay = 10 
interval = 10 
pygame.key.set_repeat(delay, interval) 

class Ball: 
    def __init__(self): 
     self.pos = [0,0] 
     self.velocity = [1,0] 

def move(): 
    self.pos[0] += self.velocity[0] 
    self.pos[1] += self.velocity[1] 
    if self.pos[0] > 10: 
     self.pos[0] *= -1 
    elif self.pos[1] > 470: # My background has a frame 
     self.pos[1] *= -1 
    elif self.pos[1] < 10: 
     self.pos[1] *= -1 
    elif self.pos[0] > 605: 
     False 

def draw(screen): 
    pygame.draw.circle(screen,WHITE,self.pos,15) 

pall = Ball() 

while True: 
    pall.move() 
    screen.blit(back, (0,0)) 
    screen.blit(paddle, (xpaddle, ypaddle)) 
    pygame.display.flip() 
    for i in pygame.event.get(): 
     if i.type == pygame.QUIT: 
      sys.exit() 
     elif i.type == pygame.KEYDOWN: 
      if i.key == pygame.K_UP: 
       ypaddle = ypaddle - 10 
       if ypaddle < 10: 
        ypaddle = 10 
      elif i.key == pygame.K_DOWN: 
       ypaddle = ypaddle + 10 
       if ypaddle > 410: 
        ypaddle = 410 

我得到这个错误 -

line 44, in <module> 
    pall.move() 
TypeError: move() takes no arguments (1 given) 

所以,我想的是反弹球墙壁(和桨,以及,但我不知道如何)

另外,如果有人帮我在这个游戏中获得一个秒表,并显示时间“幸存下来”,我将非常感激。

编辑:添加def move(self) 现在,一个更大的问题发生:

平局()和移动() - 没有定义的全局名称的 “自我”。 我真的不知道这一个。

+0

平局()和move()不在你的Ball类中,因此你不能在draw()中调用pall.move()和这一行pygame.draw.circle(screen,WHITE,self.pos,15)试图使用全局命名自我不存在。 – ecline6 2013-05-14 15:43:12

回答

0

您正在致电ball.move哪些不存在,因为move需要再次缩进。

如果你想“做的东西,而键被按下”你可以用getkeystate,当你想使用KEYDOWN事件“做的东西一次,当按键被按下”

同时看到这里:https://stackoverflow.com/a/13207525/341744