0
現在、pygameでPongを再作成しようとしています。これは私のコードです:Pygameコードが実行されていません(ウィンドウは開きません)
import sys, pygame
from pygame.locals import *
FPS = 60
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
WINDOWWIDTH = 400
WINDOWHEIGHT = 300
LINETHICKNESS = 10
PADDLESIZE = 50
PADDLEOFFSET = 20
def drawArena():
DISPLAYSURF.fill((BLACK))
pygame.draw.rect(DISPLAYSURF, WHITE, ((0,0),(WINDOWWIDTH,WINDOWHEIGHT)), LINETHICKNESS*2)
pygame.draw.line(DISPLAYSURF, WHITE, ((WINDOWWIDTH/2),0),((WINDOWWIDTH/2),WINDOWHEIGHT), (LINETHICKNESS/4))
def drawPaddle(paddle):
if paddle.bottom > (WINDOWHEIGHT - LINETHICKNESS):
paddle.bottom = WINDOWHEIGHT - LINETHICKNESS
elif paddle.top > LINETHICKNESS:
paddle.top = LINETHICKNESS
pygame.draw.rect(DISPLAYSURF, WHITE, paddle)
def drawBall(ball):
pygame.draw.rect(DISPLAYSURF, WHITE, ball)
def moveBall(ball, ballDirX, ballDirY):
ball.x += ballDirX
ball.y += ballDirY
return ball
def checkWallCollision(ball, ballDirX, ballDirY):
if ball.top == (LINETHICKNESS) or ball.bottom == (WINDOWHEIGHT - LINETHICKNESS):
ballDirY = ballDirY * -1
if ball.left == (LINETHICKNESS) or ball.right == (WINDOWHEIGHT - LINETHICKNESS):
ballDirX = ballDirX * -1
return ballDirX, ballDirY
def checkPaddleCollision(ball, ballDirX, paddle1, paddle2):
if ballDirX == -1 and paddle1.right == ball.left and paddle1.top < ball.top and paddle1.bottom > ball.bottom:
return -1
elif ballDirX == -1 and paddle2.left == ball.right and paddle2.top < ball.top and paddle2.bottom > ball.bottom:
return -1
else:
return 1
def checkPointScored(paddle1, ball, score, ballDirX):
if ball.left == LINETHICKNESS:
return 0
elif ballDirX == -1 and paddle1.right == ball.left and paddle1.top < ball.top and paddle1.bottom > ball.bottom:
score += 1
elif ball.right == WINDOWWIDTH - LINETHICKNESS:
score += 5
return score
else: return score
def aI(ball, ballDirX, paddle2):
if ballDirX == -1:
if paddle2.centery < (WINDOWHEIGHT/2):
paddle2.y += 1
elif paddle2.centery > (WINDOWHEIGHT/2):
paddle2.y -= 1
elif ballDirX == 1:
if paddle2.centery < ball.centery:
paddle2.y += 1
else:
paddle2.y -=1
return paddle2
def displayScore(score):
resultSurf = BASICFONT.render('Score = %s' %(score), True, WHITE)
resultRect = resultSurf,get_rect()
resultRect.topleft = WINDOWWIDTH = 150, 25
DISPLAYSURF.blit(resultSurf, resultRect)
def main():
pygame.init()
global DISPLAYSURF
global BASICFONT, BASICFONTSIZE
BASICFONTSIZE = 20
BASICFONT = pygame.font.Font('freesansbold.ttf', BASICFONTSIZE)
FPSCLOCK = pygame.time.Clock()
DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT))
pygame.display.set_caption('Pong')
ballX = WINDOWWIDTH/2 - LINETHICKNESS/2
ballY = WINDOWHEIGHT/2 - LINETHICKNESS/2
playerOnePosition = (WINDOWHEIGHT - PADDLESIZE) /2
playerTwoPosition = (WINDOWHEIGHT - PADDLESIZE) /2
score = 0
ballDirX = -1
ballDirY = -1
paddle1 = pygame.Rect(PADDLEOFFSET, playerOnePosition, LINETHICKNESS, PADDLESIZE)
paddle2 = pygame.Rect(WINDOWWIDTH - PADDLEOFFSET - LINETHICKNESS, playerTwoPosition, LINETHICKNESS, PADDLESIZE)
ball = pygame.Rect(ballX, ballY, LINETHICKNESS, LINETHICKNESS)
drawArena()
drawPaddle(paddle1)
drawPaddle(paddle2)
drawBall(ball)
while True: #main game loop
pygame.event.get()
pygame.event.pump()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
drawArena()
drawPaddle(paddle1)
drawPaddle(paddle2)
drawBall(ball)
pygame.display.update()
FPSCLOCK.tick(FPS)
if __name__=='__main__':
main()
私はシェルを介してファイルを実行すると私の問題は、出力がされます。しかし、私が作成したウィンドウが表示されない
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 11:57:41) on Windows (64 bits).
This is the Pyzo interpreter with integrated event loop for TK.
Type 'help' for help, type '?' for a list of *magic* commands.
Running script: "H:\pong.py"
とそれがあるかのように思えますそれが開かれたりすぐに崩壊したりした。これが何であるかを知るのを手伝ってください!
あなたのコードは、実際のインデントに掲載されているとすると、何も実際に実行されていない - 'メイン呼び出す必要があり、最後の2行を()'、彼らがメインの一部であるように、インデントされている、というよりもトップレベル。 – jasonharper