我正在尝试为我的第一个Pygame游戏创建一个乒乓球游戏。我是Pygame的新手,也是Python的新手。到目前为止,我只有两侧的两个保险杠。这是我到目前为止的代码:
import pygame, sys, os
from pygame.locals import *
from multiprocessing import Process
window = pygame.display.set_mode((600,400))
pygame.display.set_caption("Pong")
screen = pygame.display.get_surface()
pongBackground = pygame.image.load("C:/Users/LN/Desktop/PongBackground.png")
pongHitter = pygame.image.load("C:/Users/LN/Desktop/PongHitter.png")
pongHitter = pygame.image.load("C:/Users/LN/Desktop/PongHitter.png")
pongBall = pygame.image.load("C:/Users/LN/Desktop/PongBall.png")
pygame.init()
class hitter():
"""moves the pong hitter with arrow keys"""
def _init_(self):
screen.blit(pongBackground, (0,0))
self.position = pongHitter.get_rect()
pygame.display.update()
def goTo(self, coord):
screen.blit(pongHitter,coord)
self.position = self.position.move(coord)
pygame.display.update()
def moveUp(self):
for i in range(1):
screen.blit(pongBackground, self.position, self.position)
self.position = self.position.move(0, -1)
screen.blit(pongHitter, self.position)
pygame.display.update()
pygame.time.delay(10)
def moveDown(self):
for i in range(1):
screen.blit(pongBackground, self.position, self.position)
self.position = self.position.move(0, 1)
screen.blit(pongHitter, self.position)
pygame.display.update()
pygame.time.delay(10)
hitterA=hitter()
hitterB=hitter()
hitterA._init_()
hitterB._init_()
hitterA.goTo((5,200))
hitterB.goTo((590,200))
pygame.key.set_repeat(1,1)
contin=True
def inputLeft():
while True:
for event in pygame.event.get():
if pygame.key.get_pressed()[K_UP]:
hitterA.moveUp()
elif pygame.key.get_pressed()[K_DOWN]:
hitterA.moveDown()
elif pygame.key.get_pressed()[K_ESCAPE]:
sys.exit(0)
def inputRight():
while True:
for event in pygame.event.get():
if pygame.key.get_pressed()[K_w]:
hitterB.moveUp()
elif pygame.key.get_pressed()[K_s]:
hitterB.moveDown()
elif pygame.key.get_pressed()[K_ESCAPE]:
sys.exit(0)
if __name__=='__main__':
p = Process(target=inputLeft)
p.start()
p.join()
p2 = Process(target=inputRight)
p2.start()
p2.join()
现在我正试图让两个保险杠同时移动。我已经尝试过多处理,如上所示,但它会为每个进程创建不同的窗口。如何在一个窗口上显示所有内容?谢谢!顺便说一下,这个python 3.3。
答案 0 :(得分:2)
多处理是错误的方法
给一个击球手和箭头键给另一个击球手然后为你按下按键的声明,这样就可以移动一个球拍,箭头移动另一个球杆
这是你的主循环应该是什么样子而不是两个:
while True:
for event in pygame.event.get():
if pygame.key.get_pressed()[K_UP]:
hitterA.moveUp()
if pygame.key.get_pressed()[K_DOWN]:
hitterA.moveDown()
if pygame.key.get_pressed()[K_w]:
hitterB.moveUp()
if pygame.key.get_pressed()[K_s]:
hitterB.moveDown()
if pygame.key.get_pressed()[K_ESCAPE]:
sys.exit(0)
不需要多处理它没有它就可以正常工作
你的代码看起来很棒但只是摆脱了多处理
这是一个很好的pygame乒乓游戏的例子你可以用它来帮助你