공 쪼개기 문제
306
inlay941471
投稿した質問数 1
0
-
import osimport pygamepygame.init()screen_x=1920screen_y=1020screen=pygame.display.set_mode((screen_x,screen_y))pygame.display.set_caption("pygame")clock=pygame.time.Clock()current_path=os.path.dirname(__file__)image_path=os.path.join(current_path,"images")background=pygame.image.load(os.path.join(image_path,"background.png"))stage=pygame.image.load(os.path.join(image_path,"stage.png"))stage_size=stage.get_rect().sizestage_y=stage_size[1]character=pygame.image.load(os.path.join(image_path,"character.png"))character_size=character.get_rect().sizecharacter_x=character_size[0]character_y=character_size[1]character_x_pos=(screen_x/2)-(character_x/2)character_y_pos=screen_y-character_y-stage_ycharacter_to_x=0character_speed=15weapon1=pygame.image.load(os.path.join(image_path,"weapon1.png"))weapon1_size=weapon1 . get_rect().sizeweapon1_x=weapon1_size[0]weapon1s=[]weapon1_speed=22.5weapon2=pygame.image.load(os.path.join(image_path,"weapon2.png"))weapon2_size=weapon2.get_rect().sizeweapon2_x=weapon2_size[0]weapon2s=[]weapon2_speed=10weapon3=pygame.image.load(os.path.join(image_path,"weapon3.png"))weapon3_size=weapon3.get_rect().sizeweapon3_x=weapon3_size[0]weapon3s=[]weapon3_speed=2weapon_select=0ball_images=[pygame.image.load(os.path.join(image_path,"ball1.png")),pygame.image.load(os.path.join(image_path,"ball2.png")),pygame.image.load(os.path.join(image_path,"ball3.png")),pygame.image.load(os.path.join(image_path,"ball4.png"))]ball_speed_y=[-40,-35,-30,-25]balls=[]balls.append({"pos_x":50,"pos_y":50,"image_index":0,"to_x":5 ,"to_y" :- 10,"init_speed_y":ball_speed_y[0]})weapon1_to_remove=-1weapon2_to_remove=-1weapon3_to_remove=-1ball_to_remove=-1running=Truewhile running:dt=clock.tick(150)for event in pygame.event.get():if event.type==pygame.QUIT:running=Falseif event.type==pygame.KEYDOWN:if event.key==pygame.K_LEFT:character_to_x+=-1*character_speedif event.key==pygame.K_RIGHT:character_to_x+=character_speedif event.key==pygame.K_w:weapon_select=0if event.key==pygame.K_a:weapon_select=1if event.key==pygame.K_d:weapon_select=2if event.key==pygame.K_SPACE:if weapon_select==0:weapon1_x_pos=character_x_pos+character_x/2-weapon1_x/2weapon1_y_pos=character_y_posweapon1s.append([weapon1_x_pos,weapon1_y_pos])if weapon_select==1:weapon2_x_pos=character_x_pos+character_x/2-weapon2_x/2weapon2_y_pos=character_y_posweapon2s.append([weapon2_x_pos,weapon2_y_pos])if weapon_select==2:weapon3_x_pos=character_x_pos+character_x/2-weapon3_x/2weapon3_y_pos=character_y_posweapon3s.append([weapon3_x_pos,weapon3_y_pos])if event.type==pygame.KEYUP:if event.key==pygame.K_LEFT:character_to_x=0if event.key==pygame.K_RIGHT:character_to_x=0character_x_pos+=character_to_xif character_x_pos<0:character_x_pos=0if character_x_pos>screen_x-character_x:character_x_pos=screen_x-character_xweapon1s=[[w1[0],w1[1]-weapon1_speed]for w1 in weapon1s]weapon1s=[[w1[0],w1[1]]for w1 in weapon1s if w1[1]>0]weapon2s=[[w2[0],w2[1]-weapon2_speed]for w2 in weapon2s]weapon2s=[[w2[0],w2[1]]for w2 in weapon2s if w2[1]>250]weapon3s=[[w3[0],w3[1]-weapon3_speed]for w3 in weapon3s]weapon3s=[[w3[0],w3[1]]for w3 in weapon3s if w3[1]>600]for ball_index,ball_value in enumerate(balls):ball_x_pos=ball_value["pos_x"]ball_y_pos=ball_value["pos_y"]ball_image_index=ball_value["image_index"]ball_size=ball_images[ball_image_index].get_rect().sizeball_x=ball_size[0]ball_y=ball_size[1]if ball_x_pos<0 or ball_x_pos>screen_x-ball_x:ball_value["to_x"]=-1*ball_value["to_x"]if ball_y_pos>screen_y-stage_y-ball_y:ball_value["to_y"]=ball_value["init_speed_y"]else:ball_value["to_y"]+=0.5ball_value["pos_x"]+=ball_value["to_x"]ball_value["pos_y"]+=ball_value["to_y"]character_rect=character.get_rect()character_rect.left=character_x_poscharacter_rect.top=character_y_posfor ball_index,ball_value in enumerate(balls):ball_x_pos=ball_value["pos_x"]ball_y_pos=ball_value["pos_y"]ball_image_index=ball_value["image_index"]ball_rect=ball_images[ball_image_index].get_rect()ball_rect.left=ball_x_posball_rect.top=ball_y_posif character_rect.colliderect(ball_rect):running=Falsebreakfor weapon1_index,weapon1_value in enumerate(weapon1s):weapon1_x_pos=weapon1_value[0]weapon1_x_pos=weapon1_value[1]weapon1_rect=weapon1.get_rect()weapon1_rect.left=weapon1_x_posweapon1_rect.top=weapon1_y_posif weapon1_rect.colliderect(ball_rect):weapon1_to_remove=weapon1_indexball_to_remove=ball_indexif ball_image_index<3:ball_width=ball_rect.size[0]ball_height=ball_rect.size[1]small_ball_rect=ball_images[ball_image_index+1].get_rect()small_ball_width=small_ball_rect.size[0]small_ball_height=small_ball_rect.size[1]balls.append({"pos_x":ball_x_pos+ball_width/2-small_ball_width/2,"pos_y":ball_y_pos+ball_height/2-small_ball_height/2,"image_index":ball_image_index+1,"to_x":-5,"to_y":-10,"init_speed_y":ball_speed_y[ball_image_index+1]})balls.append({"pos_x":ball_x_pos+ball_width/2-small_ball_width/2,"pos_y":ball_y_pos+ball_height/2-small_ball_height/2,"image_index":ball_image_index+1,"to_x":5,"to_y":-10,"init_speed_y":ball_speed_y[ball_image_index+1]})breakfor weapon2_index,weapon2_value in enumerate(weapon2s):weapon2_x_pos=weapon2_value[0]weapon2_x_pos=weapon2_value[1]weapon2_rect=weapon2.get_rect()weapon2_rect.left=weapon2_x_posweapon2_rect.top=weapon2_y_posif weapon2_rect.colliderect(ball_rect):weapon2_to_remove=weapon2_indexball_to_remove=ball_indexif ball_image_index<3:ball_width=ball_rect.size[0]ball_height=ball_rect.size[1]small_ball_rect=ball_images[ball_image_index+1].get_rect()small_ball_width=small_ball_rect.size[0]small_ball_height=small_ball_rect.size[1]balls.append({"pos_x":ball_x_pos+ball_width/2-small_ball_width/2,"pos_y":ball_y_pos+ball_height/2-small_ball_height/2,"image_index":ball_image_index+1,"to_x":-5,"to_y":-10,"init_speed_y":ball_speed_y[ball_image_index+1]})balls.append({"pos_x":ball_x_pos+ball_width/2-small_ball_width/2,"pos_y":ball_y_pos+ball_height/2-small_ball_height/2,"image_index":ball_image_index+1,"to_x":5,"to_y":-10,"init_speed_y":ball_speed_y[ball_image_index+1]})breakfor weapon3_index,weapon3_value in enumerate(weapon3s):weapon3_x_pos=weapon3_value[0]weapon3_x_pos=weapon3_value[1]weapon3_rect=weapon3.get_rect()weapon3_rect.left=weapon3_x_posweapon3_rect.top=weapon3_y_posif weapon3_rect.colliderect(ball_rect):weapon3_to_remove=weapon3_indexball_to_remove=ball_indexif ball_image_index<3:ball_width=ball_rect.size[0]ball_height=ball_rect.size[1]small_ball_rect=ball_images[ball_image_index+1].get_rect()small_ball_width=small_ball_rect.size[0]small_ball_height=small_ball_rect.size[1]balls.append({"pos_x":ball_x_pos+ball_width/2-small_ball_width/2,"pos_y":ball_y_pos+ball_height/2-small_ball_height/2,"image_index":ball_image_index+1,"to_x":-5,"to_y":-10,"init_speed_y":ball_speed_y[ball_image_index+1]})balls.append({"pos_x":ball_x_pos+ball_width/2-small_ball_width/2,"pos_y":ball_y_pos+ball_height/2-small_ball_height/2,"image_index":ball_image_index+1,"to_x":5,"to_y":-10,"init_speed_y":ball_speed_y[ball_image_index+1]})breakif ball_to_remove>-1:del balls[ball_to_remove]ball_to_remove=-1if weapon1_to_remove>-1:del weapon1s[weapon1_to_remove]weapon1_to_remove=-1if weapon2_to_remove>-1:del weapon2s[weapon2_to_remove]weapon2_to_remove=-1if weapon3_to_remove>-1:del weapon3s[weapon3_to_remove]weapon3_to_remove=-1screen.blit(background,(0,0))for index,value in enumerate(balls):ball_x_pos=value["pos_x"]ball_y_pos=value["pos_y"]ball_image_index=value["image_index"]screen.blit(ball_images[ball_image_index],(ball_x_pos,ball_y_pos))for weapon1_x_pos,weapon1_y_pos in weapon1s:screen.blit(weapon1,(weapon1_x_pos,weapon1_y_pos))for weapon2_x_pos,weapon2_y_pos in weapon2s:screen.blit(weapon2,(weapon2_x_pos,weapon2_y_pos))for weapon3_x_pos,weapon3_y_pos in weapon3s:screen.blit(weapon3,(weapon3_x_pos,weapon3_y_pos))screen.blit(stage,(0,screen_y-stage_y))screen.blit(character,(character_x_pos,character_y_pos))pygame.display.update()pygame.quit()무기를 추가해서 다음과 같은 코드를 짰는데 정작 공이 무기에 닿았을 때는 아무일도 없고 다른 데 있을 때 발사하면 쪼개지네요......왜이러는걸까요?
python
GUI
pygame
回答 0
pygame 설치오류
0
126
1
pip install pygame 이 실패합니다
0
206
1
pip install pygame 이 안되요
0
894
1
(4:00) linting enabled 항목이 보이지 않습니다
0
157
1
마지막 프로젝트 그림 파일들을 올려주실 수는 없을까요?
0
205
1
import pygame에서 계속 오류가 발생해요
0
3581
2
무기 Y포지션 speed 감소
0
296
1
pygame 공부
0
506
0
마지막 부분 스프라이트가 맨 왼쪽에 위치해있습니다
0
266
1
실행시 글자가 깨집니다.
0
310
1
키보드 이벤트 오류
0
570
1
스크린의 높이를 680으로 설정했을 때 오류?
0
295
1
pygame.time.get_ticks() 질문있습니다.
0
535
0
캐릭터의 이동
0
330
0
적(똥)과 케릭터가 충돌했을 때 게임 오버가 뜨게 만들려고..
0
299
1
시작을 하기에 앞서...
0
389
0
이미지 배경을 투명하게 하려면?
0
375
0
파이게임이 실행은 되는데....
0
229
0
실행이 안됩니다.
0
321
0
똑같이 따라 쳤는데 오류가 생겨요
0
303
0
배경색이 안 나와요
0
331
0
import pygame 실행이 안 돼요
0
2699
1
Error
0
154
0
weapon
0
227
0

