파이썬 게임 프로젝트 2일차

이민기·2022년 4월 26일
0

클래스

class gamestart:
	def __init__(self,mobimg):
		self.mob_imgs = ['mob.png','mob2.png','mob3.png','mob4.png','mob5.png','mob6.png','mob7.png','mob8.png','mob9.png']
		self.mobimg = mobimg
		self.img = pygame.image.load(self.mob_imgs[int(self.mobimg)])
		self.img = pygame.transform.scale(self.img, (100, 100))
		self.mob = pygame.Rect(self.img.get_rect())
		self.mob.left = random.randrange(0,1180,100)
		self.mob.top = -100
	def char(self):
		print(str(self.mobimg),self.mobx,self.moby)
	def img_blit(self):
		global game
		global level
		# global set_time
		# Time = pygame.time.get_ticks() - set_time
		if level == 1:
			speed = 5
		elif level == 2:
			speed = 7
		elif level == 3:
			speed = 10
		else:
			speed = 13

		self.mob.top += speed
		if self.mob.colliderect(char_rect):
			print('몹과 충돌')
			print(self.mob)
			screen.blit(game_over, ( (resolution[0] / 2) - (game_clear_rect.width / 2), resolution[1] / 2) )
			pygame.display.update()
			pygame.time.delay(2000)
			game = False
			pygame.quit()
		if self.mob.top > resolution[1]:
			self.mob.top = -100
			self.mob.left = random.randrange(0,1180,100)
			# self.mobimg = random.randint(0,7)
			self.img = pygame.image.load(self.mob_imgs[int(self.mobimg)])
		screen.blit(self.img, self.mob)

클래스를 만들어 주었다.

떨어지는 몹 이미지를 지정할수 있고,

img_blit 함수로 그려 줄수 있다.

img_blit 함수에 충돌 부분도 같이 코딩 했다.

Monster_1 = gamestart(0)
Monster_2 = gamestart(4)

클래스를 생성하여 몹을 만들수 있다. 뒤에 이미지 번호를 받아와서 원하는 몹의 이미지로 생성할수 있다.

	if point >= 100:
		screen.blit(game_clear, ( (resolution[0] / 2) - (game_clear_rect.width / 2), resolution[1] / 2) )
		char_size = 100
		char_rect.width = 100
		char_rect.height = 100
		char_rect.top = resolution[1] - char_size
		char = pygame.transform.scale(char, (char_size, char_size))
		screen.blit(char, char_rect)
		pygame.display.update()
		pygame.time.delay(2000)
		point = 0
		level += 1
		if level == 4:
			screen.blit(game_clear, ( (resolution[0] / 2) - (game_clear_rect.width / 2), resolution[1] / 2) )
			pygame.display.update()
			pygame.time.delay(2000)
			game = False
			pygame.quit()

포인트를 만들어서 일정 포인트가 되면 레벨업이 되게 만들었다.

text = font.render('점수 : '+str(point), True, WHITE)
level_text = font.render('난이도 : '+str(level), True, WHITE)
pass_time = font.render('남은 시간 : ' +str(int(total_time)), True, BLACK)

점수와 난이도를 화면에 그려주었다.

profile
지나가는사람

2개의 댓글

comment-user-thumbnail
2022년 4월 28일

고생 많으셨습니다 :)
뭔가 익숙한 디자인이 이제 진짜 개발을 시작하셨네요 ㅎㅎ

함수로 기능을 분리해보시는거 잘하셨습니다. 이 기세몰아 클래스로 좀 더 세분류 해보시는 것을 권장드립니다!

그리고 에러 코드는 완벽하게 잡을 수 없습니다. 그럼 이를 어떻게 막을 수 있을지 고민해보세요.
(예외처리 검색)

마지막으로 게임을 만들게 되면 조건문을 꽤 많이 정의하게 되며
자연스럽게 코드가 약간 지저분해집니다.

이럴때 파이썬에서는 어떻게 코드를 깔끔하게 정리할 수 있는지 검색해보세요 :)
(switch 문법)

이렇게 공부를 열심히 하신 만큼 다음 프로젝트도 잘 해내실 수 있을것 입니다.

화이팅 !!

답글 달기
comment-user-thumbnail
2022년 4월 28일

현재 상황에 정말 필요한 좌절극복 게임 너무 재미있게 잘 만드신것 같습니다.! 점수와 난이도 잘표현해주셨고 케릭터가 너무 귀여운것 같습니다.
gamestart클래스를 사용하여 충돌처리한부분 잘구현해주셨습니다. 클래스명에 대한 파이썬 PEP8 가이드가 있는데요 아래 링크 참고하셔서
시간나실떄 파일명 정리와 주석 정리하면서 개발한 코드 정리하시면 좀더 깔끔한 코드가 될것 같습니다.!
짧은기간 동안 파이썬 문법배우고 게임개발 하시느라 정말 수고많으셨습니다.!
https://peps.python.org/pep-0008/

답글 달기