I'm trying to make a dodge ball game, so I made a value called status and made "play" and "controller explanation" screen depending on the number of status. But whenever I run it the events
in the play section is so slow as if it the clock.ticK()
was set to 1 or it was lagged.
The whole code:
import pygame
import random
import math
import time
#1.초기화
pygame.init()
#2.기본 설정
#2-1 색상
BLACK=(0,0,0)
WHITE=(255,255,255)
size=[700,1000]
#2-2 화면 크기
screen = pygame.display.set_mode(size)
#2-3 게임 이름
pygame.display.set_caption("1946")
#2-4 시계 생성
clock=pygame.time.Clock()
#2-5 이미지 불러오기
status = 0
background_image = pygame.image.load("C:/Temp/a.png")
background_image = pygame.transform.scale(background_image,(700,1000))
player = pygame.image.load("C:/Temp/b.png")
player = pygame.transform.scale(player, (50,50))
enemy = pygame.image.load("C:/Temp/c.png")
enemy = pygame.transform.scale(enemy, (50,50))
enemy1 = pygame.image.load("C:/Temp/c.png")
enemy1= pygame.transform.scale(enemy,(50,50))
level_count = 1
size_player_width = player.get_rect()[0]
size_player_height = player.get_rect()[1]
mod = 0
#2-6 오브젝트 좌표
x_pos = -300
y_pos = -300
to_x=0
to_y=0
player_speed_x = 5
player_speed_y = 5
wx = 2000
wy = 2000
bx1=100
by1=100
by2=100
by3=100
#2-6(1) 적 속도
enemy_speed_x = 4
enemy_speed_y = 4
enemy1_speed_x = 4
enemy1_speed_y = 4
#2-6(2) 변수 랜덤 값
enemy_x = -300
enemy_y = -300
enemey1_x = -300
enemy1_y = -300
e=0
f=0
#2-6(3) 적 좌표(랜덤)
#2-8 글상자
font1 = pygame.font.SysFont("airal",100,True,True)
font2 = pygame.font.SysFont("airal",50,True,True)
font3 = pygame.font.SysFont("airal",100, True, True)
text1 = font1.render("Game",True, 0)
text2 = font2.render("start",True, 0)
text3 = font2.render("control",True, 0)
text4 = font2.render("setting",True, 0)
text5 = font2.render("w = up", True, 0)
text6 = font2.render("a = left", True, 0)
text7 = font2.render("s = right", True, 0)
text8 = font2.render("d = down", True, 0)
text9 = font2.render("ctrl = speed up", True, 0)
text10 = font2.render("exit", True, 0)
text11 = font3.render("Warning!!", True,255)
#3 주요 내용
play = True
while play:
#3-1 fps
clock.tick(60)
#3-2 이벤트
for event in pygame.event.get():
if event.type == pygame.QUIT:
play = False
if status ==0:
bx1=500
by1=400
by2=600
by3=800
if event.type == pygame.MOUSEBUTTONDOWN:
e = event.pos[0]
f = event.pos[1]
if 400 < e < 500:
if 400<f<600:
status = 1
if 600<f<800:
status = 2
if 800<f<1000:
status = 3
player_speed_x = 0
player_speed_y = 0
enemy_speed_x = 0
enemy_speed_y = 0
enemy1_speed_x = 0
enemy1_speed_y = 0
if status == 1:
time.sleep(1)
player_speed_x = 5
player_speed_y = 5
enemy_speed_x = 4
enemy_speed_y = 4
enemy1_speed_x = 4
enemy1_speed_y = 4
x_pos = screen.get_size()[0]//2
y_pos = screen.get_size()[1]//2
enemy_x=random.randint(0,250)
enemy_y=random.randint(0,400)
enemy1_x=random.randint(100,300)+random.randint(100,300)
enemy1_y=random.randint(200,500)+random.randint(200,500)
bx1=-300
by1=-300
by2=-300
by3=-300
#플레이어 이동
if level_count <=30:
if event.type == pygame.KEYDOWN:
if event.key == 1073742048:
mod = 1
if event.key == 119:
to_y=-player_speed_y
elif event.key == 115:
to_y=player_speed_y
elif event.key == 97:
to_x=-player_speed_y
elif event.key == 100:
to_x=player_speed_x
elif event.key == 32:
player_speed_x = 10
player_speed_y = 10
if event.type == pygame.KEYUP:
if event.key == 119:
to_y=0.1
elif event.key == 115:
to_y=0.1
elif event.key == 97:
to_x=0.1
elif event.key == 100:
to_x=0.1
elif event.key == 32:
player_speed_x = 5
player_speed_y = 5
#경고문
if level_count == 25:
wx=500
wy=500
#이동키 좌우반전
if level_count > 30:
if level_count >= 35:
wx=2000
wy=2000
if event.type == pygame.KEYDOWN:
if event.key == 119:
to_y=player_speed_y
elif event.key == 115:
to_y=-player_speed_y
elif event.key == 97:
to_x=player_speed_y
elif event.key == 100:
to_x=-player_speed_x
elif event.key == 32:
player_speed_x = -10
player_speed_y = -10
if event.type == pygame.KEYUP:
if event.key == 119:
to_y=0.1
elif event.key == 115:
to_y=0.1
elif event.key == 97:
to_x=0.1
elif event.key == 100:
to_x=0.1
x_pos += to_x
y_pos += to_y
if enemy_x<=0:
enemy_x=0
enemy_speed_x = -enemy_speed_x
level_count += 1
elif enemy_x>=690:
enemy_x=690
enemy_speed_x = -enemy_speed_x
level_count += 1
if enemy_y<=30:
enemy_y=30
enemy_speed_y = -enemy_speed_y
level_count += 1
if enemy_y>=870:
enemy_y=870
enemy_speed_y = -enemy_speed_y
level_count += 1
if enemy1_x<=0:
enemy1_x=0
enemy1_speed_x = -enemy1_speed_x
level_count += 1
elif enemy1_x>=690:
enemy1_x=690
enemy1_speed_x = -enemy1_speed_x
level_count += 1
if enemy1_y<=30:
enemy1_y=30
enemy1_speed_y = -enemy1_speed_y
level_count += 1
if enemy1_y>=870:
enemy1_y=870
enemy1_speed_y = -enemy1_speed_y
level_count += 1
#적 속도 누적
enemy_x += enemy_speed_x
enemy_y += enemy_speed_y
enemy1_x += enemy1_speed_x
enemy1_y += enemy1_speed_y
#레벨 기록, 추가
if level_count >0:
if level_count<=40:
if level_count%3==0:
level_count += 1
if enemy_speed_x >= 0:
if enemy_speed_y >= 0:
enemy_speed_x += 0.5
enemy_speed_y += 0.5
elif enemy_speed_y < 0:
enemy_speed_x += 1
enemy_speed_y -= 1
elif enemy_speed_x < 0:
if enemy_speed_y >= 0:
enemy_speed_x -= 0.5
enemy_speed_y -= 0.5
elif enemy_speed_y < 0:
enemy_speed_x -= 0.5
enemy_speed_y -= 0.5
if enemy1_speed_x >= 0:
if enemy1_speed_y >= 0:
enemy1_speed_x += 0.5
enemy1_speed_y += 0.5
elif enemy1_speed_y < 0:
enemy1_speed_x += 0.5
enemy1_speed_y -= 0.5
elif enemy1_speed_x < 0:
if enemy1_speed_y >= 0:
enemy1_speed_x -= 0.5
enemy1_speed_y -= 0.5
elif enemy1_speed_y < 0:
enemy1_speed_x -= 0.5
enemy1_speed_y -= 0.5
if 27<level_count<30:
screen.blit(text11, (400,500))
if x_pos <= 0:
x_pos = 0
if x_pos >= 650:
x_pos = 650
if y_pos <= 50:
y_pos = 50
if y_pos >= 850:
y_pos = 850
point = level_count*50
mx_pos = x_pos + 25
my_pos = y_pos + 25
mex_pos = enemy_x + 60
mey_pos = enemy_y + 150
mex1_pos = enemy1_x + 60
mey1_pos = enemy1_y + 150
if -20 < mx_pos-mex_pos < 20:
if -20 < my_pos-mey_pos < 20:
pause = 1
print(point)
time.sleep(1)
play = False
if -20 < mx_pos-mex1_pos < 20:
if -20 < my_pos-mey1_pos < 20:
pause = 1
print(point)
time.sleep(1)
play = False
if status == 2:
if event.type == pygame.MOUSEBUTTONDOWN:
e = event.pos[0]
f = event.pos[1]
if 500 < e < 600:
if 800<f<900:
status = 0
#3-3 화면
screen.blit(background_image, (0, 0))
if status == 1:
screen.blit(player, (x_pos, y_pos))
screen.blit(enemy, (enemy_x, enemy_y))
screen.blit(enemy1, (enemy1_x,enemy1_y))
if status == 0:
screen.blit(text1, (200, 100))
screen.blit(text2, (400,400))
screen.blit(text3, (400,600))
screen.blit(text4, (400,800))
if status == 2:
screen.blit(text5, (250,200))
screen.blit(text6, (250,300))
screen.blit(text7, (250,400))
screen.blit(text8, (250,500))
screen.blit(text9, (250,600))
screen.blit(text10, (500,800))
#3-4 업데이트
pygame.display.flip()
pygame.quit()
I tried putting functions in each section and changed the time for the play section but it wouldn't work.