Python / Pygame:不确定在哪里添加新的代码行

时间:2018-01-17 02:57:55

标签: python pygame

我刚刚使用了我最新的代码,但现在我需要添加播放器命中框/ rect,我之前在输入新代码时搞砸了这些,所以我不知道在哪里插入它。

这是我的代码以及需要输入的内容: Python Conference code 这是我的代码:

# This just imports all the Pygame modules 
import pygame 
import time 

pygame.init() 
screen = pygame.display.set_mode((640, 480)) 
pygame.display.set_caption('St.Patrick game') 

clock = pygame.time.Clock() 

pygame.mixer.init(44100, -16,2,2048) 
pygame.mixer.music.load('Jake Kaufman - Shovel Knight - Specter of Torment OST - 02 From the Shadows (Plains of Passage).mp3') 
pygame.mixer.music.play(-1, 0.0) 

image = pygame.image.load('Sprite-01.png') 
# initialize variables 
image_x = 0 
image_y = 0 



while 1: 
    clock.tick(30) 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            pygame.quit() 
            pygame.mixer.music.stop(282) 
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: 
            pygame.quit() 
            pygame.mixer.music.stop(282) 


    image_x += 0 

    key = pygame.key.get_pressed() 

    if key[pygame.K_LEFT]: 
        image_x -= 10 
    if key[pygame.K_RIGHT]: 
        image_x += 10 
    if key[pygame.K_UP]: 
        image_y -= 10 
    if key[pygame.K_DOWN]: 
        image_y += 10 

    screen.fill((200, 200, 200))

    screen.blit(image, (image_x, image_y))

    pygame.display.flip()

2 个答案:

答案 0 :(得分:1)

对您的问题的快速而直接的回答是,在您使用它们之前,可以在您的代码中的任何位置添加类(通常在开头时不会嵌套在其他任何内容中),然后您可以在代码中稍后创建它(但在你的游戏循环之外)通过player = Player()电话。

看起来你可能是第一次开始编程并运行到OO中。至于更长的答案,我无法告诉你一个通用公式"新代码在哪里,但是从你问题的性质中收集,我或多或少同意现有的一条评论你应该对类和面向对象的编程做一些阅读。在编写代码时,每种情况都是细微差别的。面向对象编程(类)的主题有很多深度,但是知道所有内容对于使用类都没有必要。如果没有关于类和实例以及OO如何工作的基本知识,那么您将容易犯很多错误或模仿约定,而不是可靠地设计或复制新代码。

当您开始时,参考文档可能有点压倒性。我建议只使用谷歌搜索和#34; Python OO速成课程"只是为了让你的脚湿透。您可以找到更高级别的内容:https://www.youtube.com/watch?v=A0gaXfM1UN0

答案 1 :(得分:0)

稍微查看代码并阅读上面提到的一些内容后,我来到这里作为答案:

# This just imports all the Pygame modules 
import pygame 
import time

class Player(pygame.sprite.Sprite):
    def __init__(self, *groups):
        super(Player, self).__init__(*groups)
        self.image = pygame.image.load('Sprite-01.png')
        self.rect = pygame.rect.Rect((320, 240), self.image.get_size())

    def update(self):
        key = pygame.key.get_pressed()
        if key[pygame.K_LEFT]:
            self.rect.x -= 10
        if key[pygame.K_RIGHT]:
            self.rect.x += 10
        if key[pygame.K_UP]:
            self.rect.y -= 10
        if key[pygame.K_DOWN]:
            self.rect.y += 10

pygame.init() 
screen = pygame.display.set_mode((640, 480)) 
pygame.display.set_caption('St.Patrick game') 

clock = pygame.time.Clock() 

pygame.mixer.init(44100, -16,2,2048) 
pygame.mixer.music.load('Jake Kaufman - Shovel Knight - Specter of Torment OST - 02 From the Shadows (Plains of Passage).mp3') 
pygame.mixer.music.play(-1, 0.0) 

image = pygame.image.load('Sprite-01.png') 
# initialize variables 
image_x = 320
image_y = 240

while 1: 
    clock.tick(30) 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            pygame.quit() 
            pygame.mixer.music.stop(282) 
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: 
            pygame.quit() 
            pygame.mixer.music.stop(282) 


    image_x += 0 

    key = pygame.key.get_pressed() 

    if key[pygame.K_LEFT]: 
        image_x -= 10 
    if key[pygame.K_RIGHT]: 
        image_x += 10 
    if key[pygame.K_UP]: 
        image_y -= 10 
    if key[pygame.K_DOWN]: 
        image_y += 10 

    screen.fill((200, 200, 200))
    screen.blit(image, (image_x, image_y))
    pygame.display.flip()