Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 我的角色没有';不要呆在屏幕内_Python 2.7_Pygame - Fatal编程技术网

Python 2.7 我的角色没有';不要呆在屏幕内

Python 2.7 我的角色没有';不要呆在屏幕内,python-2.7,pygame,Python 2.7,Pygame,我是编程新手,当我运行代码时,我的角色会从屏幕上消失。我怎样才能让它留在屏幕内?另外,我有一个wall.png,它将用作墙。如何将墙作为屏幕的限制,使其不会离开屏幕 代码: import os, sys import pygame from pygame.locals import * from ayuda import * pygame.init class PyManMain: def __init__(self, width=600,height=600):

我是编程新手,当我运行代码时,我的角色会从屏幕上消失。我怎样才能让它留在屏幕内?另外,我有一个wall.png,它将用作墙。如何将墙作为屏幕的限制,使其不会离开屏幕

代码:

import os, sys
import pygame
from pygame.locals import *
from ayuda import *

pygame.init
 class PyManMain:    

    def __init__(self, width=600,height=600):

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

    def MainLoop(self):
        self.LoadSprites();
        pygame.key.set_repeat(500, 30)

        self.background = pygame.Surface(self.screen.get_size())
        self.background = self.background.convert()
        self.background.fill((50,85,40))

        while 1:
            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.snake.move(event.key)

            lstCols = pygame.sprite.spritecollide(self.snake
                                                 , self.pellet_sprites
                                                 , True)

            self.snake.pellets = self.snake.pellets + len(lstCols)


            self.screen.blit(self.background, (0, 0))     

            self.pellet_sprites.draw(self.screen)
            self.snake_sprites.draw(self.screen)
            pygame.display.flip()

    def LoadSprites(self):
        self.snake = Snake()
        self.snake_sprites = pygame.sprite.RenderPlain((self.snake))

        nNumHorizontal = int(self.width/64)
        nNumVertical = int(self.height/64)       
        self.pellet_sprites = pygame.sprite.Group()
        for x in range(nNumHorizontal):
            for y in range(nNumVertical):
                self.pellet_sprites.add(Pellet(pygame.Rect(x*64, y*64, 64, 64)))        

class Snake(pygame.sprite.Sprite):


    def __init__(self):
        pygame.sprite.Sprite.__init__(self) 
        self.image, self.rect = load_image('personaje.png',-1)
        self.pellets = 0

        self.x_dist = 5
        self.y_dist = 5 

    def move(self, key):

        xMove = 0;
        yMove = 0;

        if (key == K_RIGHT):
            xMove = self.x_dist
        elif (key == K_LEFT):
            xMove = -self.x_dist
        elif (key == K_UP):
            yMove = -self.y_dist
        elif (key == K_DOWN):
            yMove = self.y_dist
        self.rect.move_ip(xMove,yMove);



class Pellet(pygame.sprite.Sprite):

    def __init__(self, rect=None):
        pygame.sprite.Sprite.__init__(self) 
        self.image, self.rect = load_image('cofrefront.png',-1)
        if rect != None:
            self.rect = rect


if __name__ == "__main__":
    MainWindow = PyManMain()
    MainWindow.MainLoop()

我想我知道你的问题是什么。您希望您的角色(蛇)在到达窗口边缘时留在屏幕内。要实现这一点,您需要修改Snake类的
move
函数:)。我的修改如下所示:

def move(self, key):

    xMove = 0;
    yMove = 0;

    if (key == K_RIGHT) and self.rect.right + self.x_dist <= 600 :
        xMove = self.x_dist
    elif (key == K_LEFT) and self.rect.left - self.x_dist >= 0:
        xMove = -self.x_dist
    elif (key == K_UP) and self.rect.top - self.y_dist >= 0:
        yMove = -self.y_dist
    elif (key == K_DOWN) and self.rect.bottom + self.y_dist <= 600:
        yMove = self.y_dist

    self.rect.move_ip(xMove,yMove);
def移动(自身,按键):
xMove=0;
yMove=0;
如果(key==K_RIGHT)和self.rect.RIGHT+self.x_dist=0:
xMove=-self.x_dist
elif(key==K\u UP)和self.rect.top-self.y\u dist>=0:
yMove=-self.y\u dist

elif(key==K_DOWN)和self.rect.bottom+self.y_dist我想我知道你的问题是什么。您希望您的角色(蛇)在到达窗口边缘时留在屏幕内。要实现这一点,您需要修改Snake类的
move
函数:)。我的修改如下所示:

def move(self, key):

    xMove = 0;
    yMove = 0;

    if (key == K_RIGHT) and self.rect.right + self.x_dist <= 600 :
        xMove = self.x_dist
    elif (key == K_LEFT) and self.rect.left - self.x_dist >= 0:
        xMove = -self.x_dist
    elif (key == K_UP) and self.rect.top - self.y_dist >= 0:
        yMove = -self.y_dist
    elif (key == K_DOWN) and self.rect.bottom + self.y_dist <= 600:
        yMove = self.y_dist

    self.rect.move_ip(xMove,yMove);
def移动(自身,按键):
xMove=0;
yMove=0;
如果(key==K_RIGHT)和self.rect.RIGHT+self.x_dist=0:
xMove=-self.x_dist
elif(key==K\u UP)和self.rect.top-self.y\u dist>=0:
yMove=-self.y\u dist
elif(key==K_DOWN)和self.rect.bottom+self.y_dist