top of page

소스 코드 제출

공개·회원 72명

20251213

import pygame

# import pickle

# import random

# pygame.init()

#

# # 색깔

# BLACK = (0, 0, 0)

# RED = (255, 0, 0)

# GREEN = (0, 255, 0)

# BLUE = (0, 0, 255)

# WHITE = (255, 255, 255)

# YELLOW = (255, 255, 0)

# clock = pygame.time.Clock()

#

# # 화면

# screen_width = 900

# screen_height = 900

# screen = pygame.display.set_mode((screen_width, screen_height))

#

# def text_objects(text, font):

# textSurface = font.render(text, True, GREEN)

# return textSurface, textSurface.get_rect()

#

# # 구매버튼(텍스트,x좌표,y좌표,넓이,높이,전 색깔,후 색깔,행동,x,y)

# def button2(txt, x, y, w, h, ic, ac, action, l, m):

# mouse = pygame.mouse.get_pos()

# click = pygame.mouse.get_pressed()

# if x + w > mouse[0] > x and y + h > mouse[1] > y:

# pygame.draw.rect(screen, ac, (x, y, w, h))

# if click[0] == 1 and action != None:

# action(l, m)

# else:

# pygame.draw.rect(screen, ic, (x, y, w, h))

# smallText = pygame.font.SysFont("Arial", 20)

# textSurf, textRect = text_objects(txt, smallText)

# textRect.center = ((x + (w / 2)), (y + (h / 2)))

# screen.blit(textSurf, textRect)

#

# # 버튼(텍스트,x,y,넓이,높이,전 색깔,후 색깔,행동)

# def button(txt, x, y, w, h, ic, ac, action):

# mouse = pygame.mouse.get_pos()

# click = pygame.mouse.get_pressed()

# if x + w > mouse[0] > x and y + h > mouse[1] > y:

# pygame.draw.rect(screen, ac, (x, y, w, h))

# if click[0] == 1 and action != None:

# action()

# else:

# pygame.draw.rect(screen, ic, (x, y, w, h))

# smallText = pygame.font.SysFont("Arial", 20)

# textSurf, textRect = text_objects(txt, smallText)

# textRect.center = ((x + (w / 2)), (y + (h / 2)))

# screen.blit(textSurf, textRect)

#

# #세이브

# def save_game_state(savefile, file_name):

# try:

# with open(file_name, 'wb') as file:

# pickle.dump(savefile, file)

# print("Game state saved successfully!")

# except IOError as tz:

# print("Error: Unable to save game state.",tz)

#

# #불러오기

# def load_game_state(file_name):

# try:

# with open(file_name, 'rb') as file:

# game_state = pickle.load(file)

# print("Game state loaded successfully!")

# return game_state

# except (IOError, pickle.UnpicklingError):

# print("Error: Unable to load game state.")

#

# # item[x]를 y값으로 구매하기

# def item_buy(x, y):

# global item

# global money

#

# if money >= y:

# money = money - y

# item[x] = 1

#

# # item 장착

# def item_equip(x, y):

# equip[y] = x

#

# #공격

# def attack(x, y):

# global m_hp

# global fight

#

# m_hp = m_hp - (x+random.randrange(10,31))

# fight = 1

#

# #방어 선택 창

# def defense() :

# global defense_screen

#

# defense_screen=1

#

# #방어

# def defend() :

# global m_at

# global defense_screen

# global fight

# global defense_state

#

# m_at=m_at/2

# defense_state=1

# fight=1

# defense_screen = 0

#

# #회피

# def evade() :

# global defense_state

# global defense_screen

# global fight

#

# defense_state=2

# fight=1

# defense_screen=0

#

# #아이템 사용 창

# def item_use() :

# global item_screen

#

# item_screen=1

#

# #캔디 사용

# def use_candy() :

# global fight

# global item_screen

# global f_hp

# global item

#

# f_hp=f_hp+10

# item_screen=0

# fight=1

# item[1]=0

#

# def load_file(x,y) :

# global game

# global item

# global exp

# global money

# global equip

# global savefile1

# global savefile2

# global savefile3

# global load

#

# if x==1 :

# savefile1 = load_game_state('savefile1(file)')

#

# item=savefile1[0]

# exp=savefile1[1]

# money=savefile1[2]

# equip=savefile1[3]

# elif x==2:

# savefile2 = load_game_state('savefile2(file)')

#

# item = savefile2[0]

# exp = savefile2[1]

# money = savefile2[2]

# equip = savefile2[3]

# elif x==3:

# savefile3 = load_game_state('savefile3(file)')

#

# item = savefile3[0]

# exp = savefile3[1]

# money = savefile3[2]

# equip = savefile3[3]

#

# game=1

# load=1

#

# def new_start() :

# global game

# global load

#

# game=1

# load=1

#

# #변수

# m_at=0

# fight=0

# defense_screen=0

# item_screen=0

# defense_state=0

# invincible=0

# invincible_time=0

# hit=0

# game=0

# load=0

#

# # 플레이어

# exp = 0

# item = [0] * 5

# money = 10000

# equip = [99, 99]

#

# # 세이브: 저장(파일3개)

# savefile1 = [item, exp, money, equip]

# savefile2 = [item, exp, money, equip]

# savefile3 = [item, exp, money, equip]

#

# def rungame():

# global game

# global exp

# global money

# global m_hp

# global hp

# global f_hp

# global at

# global f_at

# global fight

# global invincible

# global invincible_time

# global hit

# global m_at

# global defense_screen

# global item_screen

# global defense_state

# global savefile1

# global savefile2

# global savefile3

# global load

#

# inventory = 0

#

# if load==1 :

# game=1

# else :

# game=0

#

# # 활동 위치

# player = pygame.Rect(400, 400, 100, 100)

# player_dx = 0

# player_dy = 0

#

# # 전투 위치

# fplayer = pygame.Rect(440, 440, 20, 20)

# fplayer_dx = 0

# fplayer_dy = 0

#

# bullet = pygame.Rect(random.randrange(260,621), random.randrange(260,621), 50, 50)

# bullet_dx = random.randrange(1,3)

# bullet_dy =random.randrange(1,3)

#

# # 레벨 시스템

# if 10 > exp >= 0:

# lv = 1

# elif 30 > exp >= 10:

# lv = 2

# elif 60 > exp >= 30:

# lv = 3

# elif 90 > exp >= 60:

# lv = 4

# elif exp >= 90:

# lv = 5

#

# # 체력,공격력

# hp = 15 + lv * 5

# at = lv * 5

#

# # 전투시 체력

# f_hp = hp

#

# # 몬스터 종류

# monster=random.randrange(1,4)

# if monster==1 :

# m_hp = 100

# m_at=3

# reward_money=100

# reward_exp=10

# elif monster==2 :

# m_hp=200

# m_at=4

# reward_money = 200

# reward_exp =20

# elif monster==3 :

# m_hp=300

# m_at=5

# reward_money = 300

# reward_exp =30

#

# # 세이브 불러오기

# while game==0 :

# button2('savefile1', 100, 350, 100, 50, BLUE, YELLOW, load_file, 1, 1)

# button2('savefile2', 400, 350, 100, 50, BLUE, YELLOW, load_file, 2, 1)

# if savefile3!= None :

# button2('savefile3', 700, 350, 100, 50, BLUE, YELLOW, load_file, 3, 1)

#

# button('new start', 100, 700, 100, 50, BLUE, YELLOW, new_start)

#

# # 튕김 방지?

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# pygame.quit()

# sys.exit()

#

# pygame.display.update()

#

# # 활동

# while game == 1:

# screen.fill(BLACK)

# if inventory == 0:

#

# # 9*9의 공간

# for i in range(9):

# for j in range(5):

# pygame.draw.rect(screen, WHITE, (i * 200, j * 200, 100, 100))

# pygame.draw.rect(screen, WHITE, (i * 200 + 100, j * 200 + 100, 100, 100))

# pygame.draw.rect(screen, BLACK, (i * 200 + 100, j * 200, 100, 100))

# pygame.draw.rect(screen, BLACK, (i * 200, j * 200 + 100, 100, 100))

#

# # 상점

# pygame.draw.rect(screen, BLUE, (0, 0, 100, 100))

#

# # 몬스터

# pygame.draw.rect(screen, RED, (800, 0, 100, 100))

#

# #세이브

# pygame.draw.rect(screen, YELLOW, (400, 0, 100, 100))

#

# # 플레이어 이동

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# break

# elif event.type == pygame.KEYDOWN:

# if event.key == pygame.K_LEFT:

# player_dx = -100

# elif event.key == pygame.K_RIGHT:

# player_dx = 100

# elif event.key == pygame.K_UP:

# player_dy = -100

# elif event.key == pygame.K_DOWN :

# player_dy = 100

# elif event.type == pygame.KEYUP:

# if event.key == pygame.K_LEFT:

# player_dx = 0

# elif event.key == pygame.K_RIGHT:

# player_dx = 0

# elif event.key == pygame.K_UP:

# player_dy = 0

# elif event.key == pygame.K_DOWN:

# player_dy = 0

#

# # 인벤토리 열기

# elif event.key == pygame.K_e:

# inventory = 1

#

# player.left += player_dx

# player.top += player_dy

#

# if player.left < 0:

# player.left = 0

# elif player.left > screen_width - player.width:

# player.left = screen_width - player.width

# if player.top < 0:

# player.top = 0

# elif player.top > screen_width - player.width:

# player.top = screen_width - player.width

# pygame.draw.rect(screen, GREEN, player)

#

# # 몬스터를 만나면 game=2

# if player.left == 800 and player.top == 0:

# game = 2

#

# # 상점에 들어가면 game=3

# if player.left == 0 and player.top == 0:

# game = 3

#

# #세이브 game=4

# if player.left==400 and player.top==0 :

# game=4

#

# # 인벤토리

# while inventory == 1:

# pygame.draw.rect(screen, BLACK, (50, 50, 800, 800))

#

# # 인벤토리 텍스트

# mFont = pygame.font.SysFont("Arial", 50, True, False)

# screen.blit(mFont.render(f'inventory', True, 'green'), (100, 100, 0, 0,))

# screen.blit(mFont.render(f'money: {money}', True, 'green'), (100, 700, 0, 0,))

#

# # 인벤토리 리스트

# mFont = pygame.font.SysFont("Arial", 30, True, False)

#

# # -나무검(0무기): 공격력 10증가 300원

# if equip[0] != 0 and item[0] == 1:

# screen.blit(mFont.render(f'wood sword', True, 'green'), (500, 200, 0, 0,))

# button2('equip', 700, 200, 100, 50, BLUE, YELLOW, item_equip, 0, 0)

#

# # -나무갑옷(2방어구): 데미지 2감소 300원

# if equip[1] != 2 and item[2] == 1:

# screen.blit(mFont.render(f'wood armor', True, 'green'), (100, 200, 0, 0,))

# button2('equip', 300, 200, 100, 50, BLUE, YELLOW, item_equip, 2, 1)

#

# # -나무방패(3무기): 데미지 3감소 막기 상태일시 감소하는 정도가 늘어남 300원

# if equip[0] != 3 and item[3] == 1:

# screen.blit(mFont.render(f'wood shield', True, 'green'), (500, 300, 0, 0,))

# button2('equip', 700, 300, 100, 50, BLUE, YELLOW, item_equip, 3, 0)

#

# # 마법지팡이(4무기): 공격력 20 증가 500원

# if equip[0] != 4 and item[4] == 1:

# screen.blit(mFont.render(f'magic staff', True, 'green'), (500, 400, 0, 0,))

# button2('equip', 700, 400, 100, 50, BLUE, YELLOW, item_equip, 4, 0)

# for event in pygame.event.get():

# if event.type == pygame.KEYDOWN:

# inventory = 0

# pygame.display.update()

#

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# pygame.quit()

# sys.exit()

# pygame.display.update()

#

# # 전투

# while game == 2:

# clock.tick(30)

#

# time=0

#

# screen.fill(BLACK)

#

# # 전투시 공격력

# if equip[0] == 0:

# f_at = at + 10

# elif equip[0] == 4:

# f_at = at + 20

# else:

# f_at = at

#

# # 전투시 방어력

# f_df = 0

# if equip[1] == 2:

# df = 2

# else:

# df = 0

#

# # 플레이어 체력 초과 회복 방지:

# if f_hp > hp :

# f_hp = hp

#

# #체력 표기

# mFont = pygame.font.SysFont("Arial", 30, True, False)

# screen.blit(mFont.render(f'hp:{f_hp}', True, 'green'), (100, 810, 0, 0,))

#

# # 몬스터 :

# # -체력 표기

# mFont = pygame.font.SysFont("Arial", 100, True, False)

# screen.blit(mFont.render(f'{m_hp}', True, 'green'), (350, 200, 0, 0,))

# pygame.draw.rect(screen, GREEN, (50, 400, 800, 200), 5)

#

# # 공격

# if item_screen==0 and defense_screen==0 :

# button2('attack', 50, 700, 100, 50, BLUE, YELLOW, attack, f_at, m_hp)

#

# # 아이템: 아이템 사용

# if item_screen==0 :

# button('item', 550, 700, 100, 50, BLUE, YELLOW, item_use)

# elif item_screen==1 :

# pygame.draw.rect(screen, BLACK, (0, 700, 900, 100))

# button2('attack', 50, 700, 100, 50, BLUE, YELLOW, attack, f_at, m_hp)

# if item[1]==1 :

# button('candy', 200, 470, 100, 50, BLUE, YELLOW, use_candy)

#

# #방어

# if defense_screen==0 and defense_state==0 and item_screen==0 :

# button('defense',300,700,100,50, BLUE, YELLOW, defense)

# elif defense_screen==1 and defense_state==0 :

# pygame.draw.rect(screen, BLACK, (0,700,900,100))

# button2('attack', 50, 700, 100, 50, BLUE, YELLOW, attack, f_at, m_hp)

# button('defend', 200, 470, 100, 50, BLUE, YELLOW, defend)

# button('evade', 400, 470, 100, 50, BLUE, YELLOW, evade)

#

# # 몬스터 턴

# while fight == 1:

# screen.fill(BLACK)

#

# time=time+1

#

# mFont = pygame.font.SysFont("Arial", 30, True, False)

# screen.blit(mFont.render(f'hp:{f_hp}', True, 'green'), (400, 800, 0, 0,))

#

# mFont = pygame.font.SysFont("Arial", 100, True, False)

# screen.blit(mFont.render(f'{m_hp}', True, 'green'), (400, 100, 0, 0,))

# pygame.draw.rect(screen, GREEN, (250, 250, 400, 400), 10)

#

# #플레이어 이동+무적 기믹

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# break

# elif event.type == pygame.KEYDOWN:

# if event.key == pygame.K_LEFT:

# fplayer_dx = -1

# elif event.key == pygame.K_RIGHT:

# fplayer_dx = 1

# elif event.key == pygame.K_UP:

# fplayer_dy = -1

# elif event.key == pygame.K_DOWN:

# fplayer_dy = 1

# elif event.type == pygame.KEYUP:

# if event.key == pygame.K_LEFT:

# fplayer_dx = 0

# elif event.key == pygame.K_RIGHT:

# fplayer_dx = 0

# elif event.key == pygame.K_UP:

# fplayer_dy = 0

# elif event.key == pygame.K_DOWN:

# fplayer_dy = 0

#

# fplayer.left += fplayer_dx

# fplayer.top += fplayer_dy

#

# if fplayer.left < 260:

# fplayer.left = 260

# elif fplayer.left > 620 :

# fplayer.left = 620

# if fplayer.top < 260:

# fplayer.top = 260

# elif fplayer.top > 620 :

# fplayer.top = 620

# if time>=150 and invincible==0 :

# pygame.draw.rect(screen, GREEN, fplayer)

# else :

# pygame.draw.rect(screen,BLUE, fplayer)

# invincible=1

#

# #몬스터 처치시

# if m_hp <= 0:

# # -주는 돈

# money=money+random.randrange(100,reward_money+1)

#

# # -주는 경험치

# exp = exp +reward_exp

#

# #변수 리셋

# fight=0

# defense_screen = 0

# item_screen = 0

# defense_state = 0

#

# rungame()

#

# #탄막

# if bullet.left < 260:

# bullet_dx=random.randrange(1,3)

# elif bullet.left > 590 :

# bullet_dx=-random.randrange(1,3)

# if bullet.top < 260:

# bullet_dy=random.randrange(1,3)

# elif bullet.top > 590 :

# bullet_dy=-random.randrange(1,3)

#

# bullet.left += bullet_dx

# bullet.top += bullet_dy

#

# pygame.draw.rect(screen, RED, bullet)

#

# #무적시간 해제

# if invincible_time==150 :

# invincible=0

# invincible_time=0

#

# #피격시

# if invincible==1 :

# pygame.draw.rect(screen, BLUE, fplayer)

# invincible_time=invincible_time+1

# elif invincible==0 :

# for i in range(20) :

# for j in range(20):

# if bullet.top<=fplayer.top+i<=bullet.top+50 and bullet.left<=fplayer.left+j<=bullet.left+50 :

# hit=1

# invincible = 1

#

# if hit==1 :

# if df>=m_at :

# m_at=0

# df=0

# if defense_state==2 :

# dodge_chance=random.randrange(1,11)

# if dodge_chance>4 :

# f_hp = f_hp - m_at + df

# else :

# f_hp=f_hp-m_at+df

# hit=0

# # 죽을시 게임 강제 종료

# if f_hp <= 0:

# pygame.quit()

#

# #턴 종료

# if time==1000 :

# fplayer_dx = 0

# fplayer_dy = 0

#

# fplayer.top=440

# fplayer.left=440

#

# bullet_dx = random.randrange(1,3)

# bullet_dy = random.randrange(1,3)

# bullet.top=random.randrange(260,621)

# bullet.left=random.randrange(260,621)

#

# defense_screen = 0

# item_screen =0

# fight = 0

#

# pygame.display.update()

#

# # 튕김 방지?

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# pygame.quit()

# sys.exit()

#

# pygame.display.update()

#

# # 상점

# while game == 3:

# screen.fill(BLACK)

#

# # 상점 나가기

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# break

# elif event.type == pygame.KEYUP:

# if event.key == pygame.K_e:

# rungame()

#

# # 상점 텍스트

# mFont = pygame.font.SysFont("Arial", 50, True, False)

# screen.blit(mFont.render(f'shop', True, 'green'), (80, 20, 0, 0,))

# screen.blit(mFont.render(f'press e to quit', True, 'green'), (80, 800, 0, 0,))

# screen.blit(mFont.render(f'money: {money}', True, 'green'), (100, 700, 0, 0,))

#

# # 상점 리스트:

# mFont = pygame.font.SysFont("Arial", 30, True, False)

#

# # -나무검(0무기): 공격력 10만큼 증가 300원

# if item[0] == 0:

# screen.blit(mFont.render(f'wood sword', True, 'green'), (300, 100, 0, 0,))

# screen.blit(mFont.render(f'price: 300', True, 'green'), (550, 100, 0, 0,))

# button2('buy', 700, 100, 100, 50, BLUE, YELLOW, item_buy, 0, 300)

#

# # -사탕(1아이템): 체력10회복 100원

# if item[1] == 0:

# screen.blit(mFont.render(f'candy', True, 'green'), (300, 200, 0, 0,))

# screen.blit(mFont.render(f'price: 100', True, 'green'), (550, 200, 0, 0,))

# button2('buy', 700, 200, 100, 50, BLUE, YELLOW, item_buy, 1, 100)

#

# # -나무갑옷(2방어구): 데미지 10만큼 감소 300원

# if item[2] == 0:

# screen.blit(mFont.render(f'wood armor', True, 'green'), (300, 300, 0, 0,))

# screen.blit(mFont.render(f'price: 300', True, 'green'), (550, 300, 0, 0,))

# button2('buy', 700, 300, 100, 50, BLUE, YELLOW, item_buy, 2, 300)

#

# # -나무방패(3무기): 막기 상태일시 감소하는 정도가 늘어남 300원

# if item[3] == 0:

# screen.blit(mFont.render(f'wood shield', True, 'green'), (300, 400, 0, 0,))

# screen.blit(mFont.render(f'price: 300', True, 'green'), (550, 400, 0, 0,))

# button2('buy', 700, 400, 100, 50, BLUE, YELLOW, item_buy, 3, 300)

#

# # 마법지팡이(4무기): 공격력 20만큼 증가 500원

# if item[4] == 0:

# screen.blit(mFont.render(f'magic staff', True, 'green'), (300, 500, 0, 0,))

# screen.blit(mFont.render(f'price: 500', True, 'green'), (550, 500, 0, 0,))

# button2('buy', 700, 500, 100, 50, BLUE, YELLOW, item_buy, 4, 500)

# # 공격 방식: (나무검보다 공격 방식이 어려움)

#

# pygame.display.update()

#

# #세이브

# while game==4 :

# screen.fill(BLACK)

#

# savefile1 = [item, exp, money, equip]

# savefile2 = [item, exp, money, equip]

# savefile3 = [item, exp, money, equip]

#

# button2('savefile1', 100, 350, 100, 50, BLUE, YELLOW, save_game_state, savefile1, 'savefile1(file)')

# button2('savefile2', 400, 350, 100, 50, BLUE, YELLOW, save_game_state, savefile2, 'savefile2(file)')

# button2('savefile3', 700, 350, 100, 50, BLUE, YELLOW, save_game_state, savefile3, 'savefile3(file)')

#

# button('QUIT', 700, 700, 100, 50, BLUE, YELLOW, rungame)

#

# # 튕김 방지?

# for event in pygame.event.get():

# if event.type == pygame.QUIT:

# pygame.quit()

# sys.exit()

#

# pygame.display.update()

#

# pygame.display.update()

#

# rungame()

# pygame.quit()

9회 조회
주소 : 경기도 용인시 광교중앙로 302 블루 스퀘어 602호
연락처 : 031) 216 - 1546 ,     031) 215 - 1546
사업자등록번호 : 465-92-00916
​학원 등록 제 4603호
bottom of page