これを序文にすると、私はマイナーなものがコンピュータサイエンスです。私の主な焦点はコーディングではなく、ここで私がまだ見ていない大きなミスをしたかもしれません。私の現在の問題は、私がエラーを受け取ることです。初心者のPygame、スコアが更新されていない/変数が見つかりません
"Traceback (most recent call last):
File "/home/user/Downloads/PongV1.py", line 158, in <module>
main()
File "/home/user/Downloads/PongV1.py", line 13, in <module>
game.play()
File "/home/user/Downloads/PongV1.py", line 42, in <module>
self.update()
File "/home/user/Downloads/PongV1.py", line 77, in <module>
self.ball.move()
File "/home/user/Downloads/PongV1.py", line 136, in <module>
game.score2 = game.score2 + 1
builtins.NameError: name 'game' is not defined
私はこのゲームを実行しようとするたびに、私はそれが現在ダウンロード中であることを知っていますが、私は急いで一緒にVMマシンを入れてこれを実行しています。私が知る限り、私はスコア1 /スコア2変数をうまくうまく呼びました。
私がやっていることの目標は、ボールが壁に当ったときにコーナーのスコアを更新することです。現在、それはデフ移動部に位置しています
This is what my screen looks like when I try to run this program
を探してありがとうございました!
# pygame v2
import pygame
import uaio
import math
import time
from pygame.locals import *
# User-defined functions
def main():
surface = create_window()
game = Game(surface)
game.play()
pygame.quit()
# Create window
def create_window():
pygame.init()
surface_size = (700,600)
title = 'Pong'
surface = pygame.display.set_mode(surface_size)
pygame.display.set_caption(title)
return surface
# define class games
class Game:
def __init__ (self, surface):
self.surface = surface #locations and surface colors of games
self.bg_color = pygame.Color('black')
self.pause_time = 0.01
self.close_clicked = False
self.continue_game = True
self.ball = Ball(pygame.Color('white'),[350,300],5,[6,2], surface)
self.paddle= Paddle(pygame.Color('white'),(100,300),100,100, surface)
self.score1 = 0
self.score2 = 0
def play(self): #playing the game while the game is not closed
self.draw()
while not self.close_clicked:
self.handle_event()
if self.continue_game:
self.update()
self.decide_continue
self.draw()
time.sleep(self.pause_time)
def handle_event(self): #continuing the game
event = pygame.event.poll()
if event.type == QUIT:
self.close_clicked = True
def draw(self): #drawing the balls and paddles
self.surface.fill(self.bg_color)
self.ball.draw()
self.paddle.draw()
self.draw_score()
pygame.display.update()
def draw_score(self):
string = str(self.score1)
location = 0,0
size = 80
#fg_color = pygame.Color('white')
uaio.draw_string(string, self.surface,location,size)
string = str(self.score2)
location = 650,0
size = 80
#fg_color = pygame.Color('white')
uaio.draw_string(string, self.surface,location,size)
def paddlecollide(self):
self.paddle.collide_right(x, y)
self.paddle.collidge_left(x, y)
def update(self): #updating the movement of the ball
self.ball.move()
self.ball.collide(self.paddle)
def decide_continue(self): # deciding to continue teh game
pass
class Paddle: #defining paddle
def __init__(self, color, left, width, height, surface):
#location of paddle etc
self.color = color
self.left = left
self.surface = surface
self.width = width
self.height = height
self.paddle1 = pygame.Rect(140,270,20,80)
self.paddle2 = pygame.Rect(540,270,20,80)
#return self.paddle1, self.paddle2
def draw(self):
#drawing paddle
pygame.draw.rect(self.surface, self.color, self.paddle1)
pygame.draw.rect(self.surface, self.color, self.paddle2)
def collide_left(self, x, y):
return self.paddle1.collidepoint(x, y)
def collide_right(self, x, y):
return self.paddle2.collidepoint(x, y)
class Ball: #defining ball
def __init__(self, color, center, radius, velocity, surface):
#charactersitics of said ball
self.color = color
self.center = center
self.radius = radius
self.velocity = velocity
self.surface = surface
def draw(self):
#drawing the ball
pygame.draw.circle(self.surface, self.color, self.center, self.radius)
def move(self):
# how the ball moves as well as ist velocity
size = self.surface.get_size()
for coord in range(0, 2):
self.center[coord] = (self.center[coord] + self.velocity[coord])
if self.center[coord] < self.radius:
self.velocity[coord] = -self.velocity[coord]
Game.score1 = Game.score1 + 1
if self.center[coord] + self.radius > size[coord]:
self.velocity[coord] = -self.velocity[coord]
Game.score2 = Game.score2 + 1
def collide(self, paddles):
xcoord =0
if paddles.collide_left(self.center[0], self.center[1]):
self.velocity[xcoord] = -self.velocity[xcoord]
if paddles.collide_right(self.center[0], self.center[1]):
self.velocity[xcoord] = -self.velocity[xcoord]
#if x_velocity <= 0:
# collide = False
#
#else: collide = True
メイン()
Game.score2 = Game.score2 + 1はボールに座っていますが、Gameにはアクセスできません。Gameには変数がありません。 –
ボールが親を見つけてスコアを増加させる方法についてはhttp://stackoverflow.com/questions/10791588/getting-container-parent-object-from-within-pythonを参照してください。 –