🥕

004 당근 클릭 이벤트 처리

1. 실행 코드

import pygame as pg import random def 당근초기화(): global 랜덤당근, 랜덤당근좌표 랜덤당근 = [당근] * 4 + [상한당근] * 5 랜덤당근좌표 = [(170 + x * 260, 190 + y * 220)for x in range(3) for y in range(3)] random.shuffle(랜덤당근) pg.init() 화면가로길이, 화면세로길이 = (980, 940) 화면 = pg.display.set_mode([화면가로길이, 화면세로길이]) pg.display.set_caption('상한 당근을 싱싱한 당근으로! By 인피니티 스톤') #글꼴설정 글꼴 = pg.font.SysFont('malgungothic', 35) #이미지 초기화 배경이미지 = pg.image.load('img/당근_배경.png') 배경이미지 = pg.transform.scale(배경이미지, (화면가로길이, 화면세로길이)) 화면.blit(배경이미지, (0, 0)) #시간바 시간바 = pg.image.load('img/시간바.png') 시간바 = pg.transform.scale(시간바, (400, 100)) 화면.blit(시간바, (520, 20)) #당근 당근 = pg.image.load('img/당근.png') 당근 = pg.transform.scale(당근, (130, 220)) # 화면.blit(당근, (200, 200)) #상한당근 상한당근 = pg.image.load('img/상한당근.png') 상한당근 = pg.transform.scale(상한당근, (130, 220)) # 화면.blit(상한당근, (300, 300)) pg.display.update() 당근초기화() 경과시간 = 0 당근생성시간 = 0 당근인덱스 = 0 시계 = pg.time.Clock() 현재챕터 = 1 최종챕터 = 10 while True: 화면.blit(배경이미지, (0, 0)) 화면.blit(시간바, (520, 20)) 흐른시간 = 시계.tick(60) / 1000 경과시간 += 흐른시간 if 경과시간 <= 60: 시간문자열 = f'{round(경과시간, 1)} 초' else: 시간문자열 = f'{int(경과시간 // 60)}분 {int(경과시간 % 60)}초' 시간 = 글꼴.render(시간문자열, True, (0, 0, 0)) 화면.blit(시간, (700, 50)) 챕터글자 = 글꼴.render(f'챕터 : {현재챕터} / {최종챕터}', True, (255, 255, 255)) 화면.blit(챕터글자, (80, 20)) 당근글자 = 글꼴.render(f'남은 상한당근 갯수 : {len(랜덤당근) - 랜덤당근.count(당근)}개', True, (255, 255, 255)) 화면.blit(당근글자, (80, 90)) 당근생성시간 += 흐른시간 if 당근생성시간 >= 1: 당근생성시간 = 0 당근인덱스 = random.randrange(len(랜덤당근)) 현재당근 = 화면.blit(랜덤당근[당근인덱스], 랜덤당근좌표[당근인덱스]) pg.display.update() for 이벤트 in pg.event.get(): if 이벤트.type == pg.QUIT: pg.display.quit() elif 이벤트.type == pg.MOUSEBUTTONDOWN: 클릭_위치 = pg.mouse.get_pos() if 당근인덱스 != -1 and 현재당근.collidepoint(클릭_위치): if 랜덤당근[당근인덱스] == 상한당근: 랜덤당근[당근인덱스] = 당근 if len(랜덤당근) - 랜덤당근.count(당근) == 0: 현재챕터 += 1 당근초기화()

2. 상세 내용

당근글자 = 글꼴.render(f'남은 상한당근 갯수 : {len(랜덤당근) - 랜덤당근.count(당근)}개', True, (255, 255, 255))
  • 당근 갯수를 확인 하기 위해 남은 랜덤당근 리스트에 남은 당근의 갯수를 변수에 랜더링 하여 추가합니다.
for 이벤트 in pg.event.get(): if 이벤트.type == pg.QUIT: pg.display.quit() elif 이벤트.type == pg.MOUSEBUTTONDOWN: 클릭_위치 = pg.mouse.get_pos() if 당근인덱스 != -1 and 현재당근.collidepoint(클릭_위치): if 랜덤당근[당근인덱스] == 상한당근: 랜덤당근[당근인덱스] = 당근 if len(랜덤당근) - 랜덤당근.count(당근) == 0: 현재챕터 += 1 당근초기화()
  • 마우스 버튼이 클릭되면
  • pg.mouse.get_pos()를 사용하여 마우스의 클릭 위치값을 얻습니다.
  • 당근인덱스가 -1이 아니고 현재당근(화면에 나오는 당근)이 마우스의 클릭위치에 닿았다면
  • 상한당근이라면 당근으로 변경해줍니다.
  • 만약 5개의 상한당근을 모두 클릭했을 경우 챕터를 증가시키고 초기화 함수를 통해 다시 당근들을 설정합니다.

3. 실행 결과

notion imagenotion image