2013-05-13 38 views
0

当你从描述(或不),我需要帮助创建一个接近庞的游戏。需要帮助创建比赛接近“庞”(Pygame)

我真的是编程新手,我自己都在学习。你帮助我创造的游戏将成为我的第一场比赛。

我的游戏版本,解释说:

照片(不能在这里发表的照片,因为我是新): http://www.upload.ee/image/3307299/test.png(此链接是安全的)

所以,数字1个代表墙(黑色) 2号标记区域,时间停止(比赛结束) 3是你的时间幸存下来。 4号球是弹跳的球(就像他们在乒乓球一样)。

代码:

import pygame 
import random 

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


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) 


while True: 
    screen.blit(back, (0,0)) 
    screen.blit(paddle, (xpaddle, ypaddle)) 
    pygame.display.flip() 
    pygame.time.delay(20) 
    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 

我想有一个反弹球,但我没有知识来创建它。 它不一定非常困难(也许使用pygame.draw.circle?) 其实它必须很简单,因为精灵对我来说可能太多了。 我的想法是在每次球到达特定坐标时改变坐标。 我不只是要求某人制作我喜欢的游戏,它只是用于教育目的。

我很想看看你提供的代码的一些意见。正如我所说,我刚开始学习它。 我的英语不是最好的。对于那个很抱歉。 在此先感谢! (我知道我的帖子有点混乱和不明确)

如果需要,我会上传背景和桨图片。

回答

0

您可以创建一个Ball类,将有2种方法:

更新() - 将根据speed_x和speed_y和 检查,如果任何冲突检测

平局移动球() - 会使表面光滑/或在球位置绘制一个圆圈。

你必须考虑的另一件事是碰撞。 你可以找到一个点是否在这样的矩形:

我们有一个点的矩形:p1p2p3p4p0是我们的测试点。

p0是如果dist(p0,p1) + disp(p0,p2) + ... + disp(p0,p4) == WIDTH+HEIGHT

你可以揣摩方程为圆矩形。提示:半径是你需要的。

编辑:类例如:

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] 
    def draw(screen): 
     pygame.draw.circle(screen,WHITE,self.pos,5) 
+0

我很欣赏这个事实,你甚至不屑于帮助我。 我想我碰到了碰撞的一部分,但创建一个工作课程并没有出来。 你可以做一个例子(或者甚至可能是程序的一部分) 我知道我要求把你的空闲时间,但我认为我错过了一些重要的基础知识。 – Taneeleon 2013-05-13 19:03:18

+0

另外,如何为碰撞后的球设定新的方向? – Taneeleon 2013-05-13 19:19:47

+0

@ Taneeleon只是扭转速度 – 2013-05-13 19:21:48

0

要延长@Bartlomiej莱万多夫斯基,为了让你需要

每一个弧圈球ball.update()会做:

ball.x += ball.xvel 
    ball.y += ball.yvel` 

然后

  • 如果发生碰撞左/右墙ball.x *= -1
  • ,如果你与顶级/ BOT墙壁ball.y *= -1

使用pygame.Rect将simplfy逻辑

# bounce on right side 
ball.rect.right >= screen.rect.right: 
    ball.yvel *= -1 

# bounce top 
ball.rect.top <= screen.rect.top: 

# bot 
ball.rect.bottom >= screen.rect.bot: 

# etc... 

编辑碰撞:巴特加入不同的名字,但它的一样。

+0

谢谢!只是一件最后的事情 - 与桨一体化。我的意思是,你如何告诉蟒蛇观看运动并识别碰撞?另外,显示“存活时间”的秒表是一个难题。 – Taneeleon 2013-05-13 20:08:10

+0

对于碰撞:在'移动'你可以检查碰撞。在不同的情况下有7个'Rect'碰撞函数。 http://www.pygame.org/docs/ref/rect.html - 如果您使用'Sprite'类,还有几个碰撞函数:http://www.pygame.org/docs/ref/sprite html的 – ninMonkey 2013-05-14 05:26:08