首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏无法正常退出

游戏无法正常退出
EN

Stack Overflow用户
提问于 2015-12-14 08:30:33
回答 1查看 47关注 0票数 2

这是我的代码(这是一个吃豆人游戏类型)

它运行,但当角色,在这种情况下,收割者死亡时,他与驱魔者碰撞,游戏将崩溃,而不是显示游戏的标志

代码语言:javascript
复制
    enter code here`#! /usr/bin/env python

import os, sys
import pygame
import menu
import level001
import basicSprite
from pygame.locals import *
from helpers import *
from ReaperSprite import *
from basicExorcist import Exorcist

if not pygame.font: print 
if not pygame.mixer: print 

BLOCK_SIZE = 24
class PyManMain:

def __init__(self, width=640,height=480):

    pygame.init()
    self.width = width
    self.height = height

    self.screen = pygame.display.set_mode((self.width
                                           , self.height))

def MainLoop(self):



    self.LoadSprites();


    self.background = pygame.Surface(self.screen.get_size())
    self.background = self.background.convert()
    self.background.fill((0,0,0))

    self.block_sprites.draw(self.screen)
    self.block_sprites.draw(self.background)
    #self.skull_sprites.draw(self.screen)
    #self.skull_sprites.draw(self.background)

    pygame.display.flip()
    while 1:

        self.reaper_sprites.clear(self.screen,self.background)
        self.exorcist_sprites.clear(self.screen,self.background)

        for event in pygame.event.get():
            if event.type == pygame.QUIT: 
                sys.exit()
            elif event.type == KEYDOWN:
                if ((event.key == K_RIGHT)
                or (event.key == K_LEFT)
                or (event.key == K_UP)
                or (event.key == K_DOWN)):
                    self.reaper.MoveKeyDown(event.key)
            elif event.type == KEYUP:
                if ((event.key == K_RIGHT)
                or (event.key == K_LEFT)
                or (event.key == K_UP)
                or (event.key == K_DOWN)):
                    self.reaper.MoveKeyUp(event.key)
            elif event.type == SUPER_STATE_OVER:
                self.reaper.superState = False

                pygame.time.set_timer(SUPER_STATE_OVER,0)
                for exorcist in self.exorcist_sprites.sprites():
                    exorcist.SetScared(False)
            elif event.type == SUPER_STATE_START:
                for exorcist in self.exorcist_sprites.sprites():
                    exorcist.SetScared(True)
            elif event.type == REAPER_EATEN:
                """The reaper is dead!"""
                """He has become a human again for that his soul will burn in hell"""
                sys.exit()


        self.reaper_sprites.update(self.block_sprites
                                   , self.skull_sprites
                                   , self.super_skull_sprites
                                   , self.exorcist_sprites)
        self.exorcist_sprites.update(self.block_sprites)




        textpos = 0          
        self.screen.blit(self.background, (0, 0))     
        if pygame.font:
            font = pygame.font.Font(None, 36)
            text = font.render("Skulls %s" % self.reaper.skulls
                                , 1, (255, 0, 0))
            textpos = text.get_rect(centerx=self.background.get_width()/2)
            self.screen.blit(text, textpos)

        reclist = [textpos]  
        reclist += self.skull_sprites.draw(self.screen)
        reclist += self.super_skull_sprites.draw(self.screen)
        reclist += self.reaper_sprites.draw(self.screen)
        reclist +=  self.exorcist_sprites.draw(self.screen)
        #reclist += (self.block_sprites.draw(self.screen))

        pygame.display.update(reclist)
       # pygame.display.flip()

def LoadSprites(self):

    x_offset = (BLOCK_SIZE/2)
    y_offset = (BLOCK_SIZE/2)

    level1 = level001.level()
    layout = level1.getLayout()
    img_list = level1.getSprites()


    self.skull_sprites = pygame.sprite.RenderUpdates()
    self.super_skull_sprites = pygame.sprite.RenderUpdates()

    self.block_sprites = pygame.sprite.RenderUpdates()
    self.exorcist_sprites = pygame.sprite.RenderUpdates()

    for y in xrange(len(layout)):
        for x in xrange(len(layout[y])):

            centerPoint = [(x*BLOCK_SIZE)+x_offset,(y*BLOCK_SIZE+y_offset)]
            if layout[y][x]==level1.BLOCK:
                block = basicSprite.Sprite(centerPoint, img_list[level1.BLOCK])
                self.block_sprites.add(block)
            elif layout[y][x]==level1.REAPER:
                self.reaper = Reaper(centerPoint,img_list[level1.REAPER])
            elif layout[y][x]==level1.SKULL:
                skull = basicSprite.Sprite(centerPoint, img_list[level1.SKULL])
                self.skull_sprites.add(skull) 
            elif layout[y][x]==level1.EXORCIST:
                exorcist = Exorcist(centerPoint, img_list[level1.EXORCIST]
                                   , img_list[level1.SCARED_EXORCIST])
                self.exorcist_sprites.add(exorcist) 

                skull = basicSprite.Sprite(centerPoint, img_list[level1.SKULL])
                self.skull_sprites.add(skull) 
            elif layout[y][x]==level1.SUPER_SKULL:
                super_skull = basicSprite.Sprite(centerPoint, img_list[level1.SUPER_SKULL])
                self.super_skull_sprites.add(super_skull) 


    self.reaper_sprites = pygame.sprite.RenderUpdates(self.reaper)                                  

if __name__ == "__main__":
    MainWindow = PyManMain(500,575)
    MainWindow.MainLoop()`
EN

回答 1

Stack Overflow用户

发布于 2015-12-15 03:51:07

看看你的代码中的博弈条件:

代码语言:javascript
复制
elif event.type == REAPER_EATEN:
            """The reaper is dead!"""
            """He has become a human again for that his soul will burn in hell"""
            sys.exit()

三重引号中的两行只是字符串,但是没有任何东西告诉程序输出它们,所以它们被忽略了。您需要输出它们。这可以像print()语句一样简单:

代码语言:javascript
复制
elif event.type == REAPER_EATEN:
                print("The reaper is dead!")
                print("He has become a human again for that his soul will burn in hell")
                sys.exit()

注意,这将仅输出到shell/终端。如果要在游戏窗口中显示文本,则必须执行一些文本渲染-有关详细信息,请参见http://www.pygame.org/docs/ref/font.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34258121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档