2017-11-23 4 views
2

저는 파이 게임에서 파이썬으로 게임을 쏘아 올리려고합니다.랜덤 크기의 도형을 화면의 상단에서 하단으로 떨어 뜨리는 방법은 무엇입니까?

import pygame 
import random 
pygame.init() 

BLACK=(0,0,0) 
WHITE=(255,255,255) 
RED=(255,0,0) 
GREEN=(0,255,0) 
BLUE=(0,0,255) 

width=600 
height=650 

screen=pygame.display.set_mode((width,height)) 
pygame.display.set_caption('Videojuego') 
done=False 
screen.fill(WHITE) 
pygame.display.flip() 

background_image=pygame.image.load('fondo.jpg').convert() 
screen.blit(background_image,[0,0]) 

player_image=pygame.image.load('rocket.png').convert() 
player_image=pygame.transform.scale(player_image,(50,75)) 
pygame.display.flip() 

pygame.mouse.set_visible(False) 

count=0 
clock=pygame.time.Clock() 

rect_x=random.randrange(0,580) 
rect_y=random.randrange(0,2) 
rect_chx=5 

size1=random.randrange(10,70) 
size2=random.randrange(15,84) 

while(not done): 
    for event in pygame.event.get(): 
    if(event.type==pygame.QUIT): 
     print('Quit') 
     done=True 
    else: 
     done=False 
    screen.blit(background_image,[0,0]) 
    player_position=pygame.mouse.get_pos() 
    x=player_position[0] 
    y=player_position[1] 
    screen.blit(player_image,(x,y)) 
    fig=pygame.draw.rect(screen,RED,[rect_x,rect_y,size1,size2]) 
    if(rect_y>550 or rect_y<5): 
     rect_chx=rect_chx*1 
    rect_y+=rect_chx 
    pygame.display.flip() 
    clock.tick(60) 

pygame.quit() 

이 코드 전용 : 내가 파이썬 꽤 새로 온 사람과 내가 개체 내 화면 상단에서 떨어질 수 있도록 어떻게 잘 모르겠어요, 어쨌든, 여기에 (내가 파이썬 3.6를 사용하고 있습니다) 내 코드입니다 하나의 직사각형이 떨어지게하고, 더 많은 것을 만드는 방법을 모른다.

답변

1

당신은 사각형을 캡슐화하는 간단한 클래스 사각형을 만들고, 화면에 인쇄 할 수 있습니다 :의 숫자로 rect_list = [Rect() for _ in range(10)] (변경 10 :

class Rect(): 
    def __init__(self): 
     self.x=random.randrange(0,580) 
     self.y=random.randrange(0,2) 

     self.size_x=random.randrange(10,70) 
     self.size_y=random.randrange(15,84) 

    def update(self, screen, fall_speed): 
     self.y += fall_speed 
     pygame.draw.rect(screen, RED, [self.x, self.y, self.size_x, self.size_y]) 

는 그런 다음 목록에 몇 가지 사각형을 만들 수 있습니다 원하는 직사각형).

마지막으로, 당신은 각 루프에서 목록을 반복 :

while(not done): 
    for event in pygame.event.get(): 
    if(event.type==pygame.QUIT): 
     print('Quit') 
     done=True 
    screen.blit(background_image,[0,0]) 
    player_position=pygame.mouse.get_pos() 
    x=player_position[0] 
    y=player_position[1] 
    screen.blit(player_image,(x,y)) 
    for rect in rect_list: 
     # Here 5 is the rect_chx, or fall speed 
     rect.update(screen, 5) 
    pygame.display.flip() 
    clock.tick(60) 

이 처음에 10 RECT 권리를 생성합니다. Rect가 맨 아래에있을 때이를 감지하고 목록에서 제거하면 (더 이상 표시되지 않음) 목록에 새 Rect가 추가되어 목록 상단에 팝업이 표시됩니다.


기능, 클래스, 루프 및 목록으로 기본 파이썬을 수행하는 방법을 배우는 것이 좋습니다. 가장 작은 게임조차 만들려는 경우 필수입니다.

관련 문제