2014-02-13 4 views
1

Я относительно новичок в мире сценариев pygame, и мне нужна была помощь в написании игры: это будет лабиринт с переходом игрока от начальной точки к точке прибытия.Перемещение .png выход из экрана

Я решил начать с основ, создав окно, в котором персонаж (файл .png) перемещается при нажатии клавиш numpad.

Проблема в том, когда мой .png достигает экрана, через который проходит. Как я могу предотвратить его выход из экрана? (PS: Я хочу, если это возможно, решение, в котором мне не нужно использовать класс, я абсолютно ненавижу тех, и мне это совсем не удобно)

Вот код того, что я написал до сих пор:

импорт librairies/importating библиотеки

import pygame 
from pygame.locals import * 


pygame.init() 

pygame.time.Clock().tick(30) 

F1=pygame.display.set_mode((640, 480), RESIZABLE) # création fenêtre/creating main window 

bg=pygame.image.load("background.jpg").convert() # chargement et conversion de l'image/loading and converting picture 
F1.blit(bg, (0,0)) #collage de l'image de fond/sticking background 
pygame.display.flip() # raffraichissement écran/refreshing screen 

perso=pygame.image.load("perso.png").convert_alpha() 
F1.blit(perso, (0,0)) 
pygame.display.flip() 

F1_rect=F1.get_rect() 
position=perso.get_rect() 
F1.blit(perso, position) 

pygame.display.set_caption("Deadalus V 0.0.0.1") 

continuer = 1 # création d'une boucle infinie/creating main loop 

pygame.key.set_repeat(1,1) 
while continuer: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       continuer = 0 
      if event.type == KEYDOWN: 
       if event.key == K_KP2: 
        position = position.move(0,3) 
       if event.key == K_KP5: 
        position = position.move(0,-3) 
       if event.key == K_KP1: 
        position = position.move(-3,0) 
       if event.key == K_KP3: 
        position = position.move(3,0) 
     F1.blit(bg, (0,0)) 
     F1.blit(perso, position) 

     pygame.display.flip() 
+0

Вам потребуется некоторое условие, которое проверяет представление местоположения игрока и границы игровой зоны. Я думаю, что рано или поздно вам понадобятся занятия, чтобы помочь с абстракцией (если, может быть, *, вы - гуру функционального программирования.) Классы будут удобны для изучения - вам в конечном итоге нужно будет с ними комфортно. – BlackVegetable

+0

Спасибо за ответ. Вы знаете, где я могу найти хороший полный учебник о том, как использовать класс? – MaxFR68

+0

Это в значительной степени стандартный учебник, хотя я уверен, что поиск в Google даст вам больше: http://docs.python.org/2/tutorial/classes.html – BlackVegetable

ответ

0

Просто используйте clamp

position.clamp_ip(F1_rect) 

таким образом, ваша позиция прямоугольника будет ВСЕГДА внутри F1_rect.

+0

Он работает! Большое спасибо ! (Хотя я думаю, что вернусь к другим вопросам;) – MaxFR68

Смежные вопросы