Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from constantes import *
- from def_dados import *
- from math import *
- M_LARG_INI=38
- def distancia(x1, y1, x2, y2):
- return sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
- def colidem(per, ini):
- raio1 = M_LARG_INI
- raio2 = M_LARG_INI
- d = distancia(per.x, per.y, ini.x, ini.y)
- if d <= raio1 + raio2:
- return True
- #else
- return False
- def mover_perso(per):
- '''
- função responsavel por mover o personagem na tela
- :param per: jogo.Personagem
- :return: Personagem
- '''
- posicao_x = per.x + per.dx
- posicao_y = per.y + per.dy
- if posicao_x > L1_LIMITE_DIREITO or posicao_x < L1_LIMITE_ESQUERDO:
- return Personagem(per.x, per.y, per.dx, per.dy, per.direcao)
- if posicao_y < L1_LIMITE_CIMA or posicao_y > L1_LIMITE_BAIXO:
- return Personagem(per.x, per.y, per.dx, per.dy, per.direcao)
- return Personagem(posicao_x, posicao_y, per.dx, per.dy, per.direcao)
- def desenha_game_over():
- texto_game_over = texto("GAME OVER", Fonte("comicsans", 50), Cor("red"))
- colocar_imagem(texto_game_over, tela, LARGURA//2, ALTURA//2)
- def mover_tiro(tir):
- '''
- funçao responsavel por mover os tiros na tela
- :param tir: jogo.Tiro
- :return: Tiro
- '''
- if tir.direcao == 1:
- novo = tir.y - VEL_TIRO
- return Tiro(tir.x, novo, tir.direcao)
- if tir.direcao == 2:
- novo = tir.x - VEL_TIRO
- return Tiro(novo, tir.y, tir.direcao)
- if tir.direcao == 3:
- novo = tir.y + VEL_TIRO
- return Tiro(tir.x, novo, tir.direcao)
- if tir.direcao == 4:
- novo = tir.x + VEL_TIRO
- return Tiro(novo, tir.y, tir.direcao)
- return tir
- def mover_tiros(tir):
- return [mover_tiro(tiro) for tiro in tir]
- def mover_jogo(jogo):
- '''
- função que é chamada no 'big bang' a cada tick
- é responsavel por chamar as outras funçoes
- :param jogo: Jogo
- :return: Jogo
- '''
- if (colidem(jogo.Personagem, jogo.inimigo)):
- return Jogo(jogo.Personagem, jogo.Tiro, True, jogo.inimigo)
- else:
- per=mover_perso(jogo.Personagem)
- tir=mover_tiros(jogo.Tiro)
- return Jogo(per, tir, jogo.game_over, jogo.inimigo)
- def desenha_pers(per):
- '''
- funçao responsavel por desenhar o perosnagem e suas direçoes
- :param per: jogo.Personagen
- :return: Jogo
- '''
- colocar_imagem(IMG_LAYOUT_1,tela,LARGURA//2,ALTURA//2)
- if per.direcao == 1:
- colocar_imagem(PERSONAGEM_UP, tela, per.x, per.y)
- elif per.direcao == 2:
- colocar_imagem(PERSONAGEM_LEFT, tela, per.x, per.y)
- elif per.direcao == 3:
- colocar_imagem(PERSONAGEM_DOWN, tela, per.x, per.y)
- elif per.direcao == 4:
- colocar_imagem(PERSONAGEM_RIGHT, tela, per.x, per.y)
- else:
- colocar_imagem(PERSONAGEM_DOWN,tela,per.x,per.y)
- def desenha_tiro(tir):
- '''
- responsavel por desenhar o tiro e suas direçoes
- :param tir: jogo.Tiro
- :return: tela(Imagem)
- '''
- if tir.direcao == 1:
- colocar_imagem(TIRO_UP, tela, tir.x, tir.y)
- if tir.direcao == 2:
- colocar_imagem(TIRO_LEFT, tela, tir.x, tir.y)
- if tir.direcao == 3:
- colocar_imagem(TIRO_DOWN, tela, tir.x, tir.y)
- if tir.direcao == 4:
- colocar_imagem(TIRO_RIGHT, tela, tir.x, tir.y)
- def desenha_tiros(tir):
- for tiro in tir:
- desenha_tiro(tiro)
- def desenha_inimigo(ini):
- colocar_imagem(INIMIGO, tela, ini.x, ini.y)
- def desenha_jogo(jogo):
- '''
- funçao que é chamada no 'big bang'
- é responsavel por chamar as funçoes de desenhar
- :param jogo: Jogo
- :return: tela(imagem)
- '''
- if jogo.game_over == True:
- desenha_game_over()
- else:
- desenha_pers(jogo.Personagem)
- desenha_inimigo(jogo.inimigo)
- desenha_tiros(jogo.Tiro)
- '''
- trata_tecla: Personagem, Tecla -> Personagem
- Conforme aperta as teclas de movimento muda o dx e dy do personagem'''
- def trata_tecla_pers(per, tecla):
- if tecla == pg.K_w:
- return Personagem(per.x, per.y, 0, -VEL_PERSONAGEM, 1)
- if tecla == pg.K_a:
- return Personagem(per.x, per.y, -VEL_PERSONAGEM, 0, 2)
- if tecla == pg.K_s:
- return Personagem(per.x, per.y, 0, VEL_PERSONAGEM, 3)
- if tecla == pg.K_d:
- return Personagem(per.x, per.y, VEL_PERSONAGEM, 0, 4)
- return per
- def trata_tecla_tiro(jog, tecla):
- '''
- responsavel por atirar, quando tecla == pg.K_SPACE
- :param jog: jogo
- :param tecla: pg.<tecla>
- :return: Tiro
- '''
- if tecla == pg.K_SPACE:
- tiro_x=jog.Personagem.x
- tiro_y=jog.Personagem.y
- jog.Tiro.append(Tiro(tiro_x, tiro_y, jog.Personagem.direcao))
- return jog.Tiro
- #else
- return jog.Tiro
- def trata_tecla_jogo(jogo, tecla):
- '''
- funçao que é chamada no 'big bang' por quando_tecla
- é reponsavel por chamar as funçoes baseadas em teclas
- :param jogo: Jogo
- :param tecla: pg.<tecla>
- :return: Jogo
- '''
- per = trata_tecla_pers(jogo.Personagem, tecla)
- tir = trata_tecla_tiro(jogo, tecla)
- return Jogo(per, tir, jogo.game_over, jogo.inimigo)
- def trata_solta_per(per, tecla):
- '''
- funçao responsavel por parar o personagem quando o jogador solta a tecla
- :param per: jogo.Personagem
- :param tecla: pg.<tecla>
- :return: Personagem
- '''
- if tecla == pg.K_w:
- return Personagem(per.x, per.y, per.dx, 0, per.direcao)
- if tecla == pg.K_a:
- return Personagem(per.x, per.y, 0, per.dy, per.direcao)
- if tecla == pg.K_s:
- return Personagem(per.x, per.y, per.dx, 0, per.direcao)
- if tecla == pg.K_d:
- return Personagem(per.x, per.y, 0, per.dy, per.direcao)
- return per
- def trata_solta_tiro(tiro, tecla):
- '''
- função responsavel por poha nenuhma...
- :param tiro: jogo.Tiro
- :param tecla: pg.<tecla>
- :return: Tiro(a mesma merda)
- '''
- if tecla==pg.K_SPACE:
- return tiro
- return tiro
- def trata_tecla_solta_jogo(jogo, tecla):
- '''
- função que é chamada no 'big bang' em quando_solta_tecla
- responsavel por chamar as funçoes de solta tecla
- :param jogo: Jogo
- :param tecla: pg.<tecla>
- :return: Jogo
- '''
- per=trata_solta_per(jogo.Personagem, tecla)
- tir=trata_solta_tiro(jogo.Tiro, tecla)
- return Jogo(per, tir, jogo.game_over, jogo.inimigo)
- //////////////////////////////////////////////////////////////
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from htdp_pt_br.universe import *
- '''# Preparacao da Tela'''
- (LARGURA, ALTURA) = (700, 700)
- tela = criar_tela_base(LARGURA, ALTURA)
- '''Imagens'''
- #layouts
- IMG_LAYOUT_1 = carregar_imagem('./Imagens/layout1.png')
- IMG_LAYOUT_1 = definir_dimensoes(IMG_LAYOUT_1,LARGURA,ALTURA)
- #personagem
- LARGURA_PERSONAGEM = 55
- ALTURA_PERSONAGEM = 80
- M_LARGURA_PERSONAGEM = LARGURA_PERSONAGEM//2
- M_ALTURA_PERSONAGEM = ALTURA_PERSONAGEM//2
- PERSONAGEM_BASE = carregar_imagem('./Imagens/fantasma_lado.png')
- PERSONAGEM_BASE = definir_dimensoes(PERSONAGEM_BASE, LARGURA_PERSONAGEM, ALTURA_PERSONAGEM)
- PERSONAGEM_LEFT = PERSONAGEM_BASE
- PERSONAGEM_RIGHT = PERSONAGEM_BASE
- PERSONAGEM_UP = carregar_imagem('./Imagens/fantasma_costas.png')
- PERSONAGEM_UP = definir_dimensoes(PERSONAGEM_UP, LARGURA_PERSONAGEM, ALTURA_PERSONAGEM)
- PERSONAGEM_DOWN = carregar_imagem('./Imagens/fantasma_frente.png')
- PERSONAGEM_DOWN = definir_dimensoes(PERSONAGEM_DOWN, LARGURA_PERSONAGEM, ALTURA_PERSONAGEM)
- #inimigo
- INIMIGO = carregar_imagem('./Imagens/passaralho.png')
- INIMIGO = definir_dimensoes(INIMIGO, 80, 80)
- INIMIGO_RIGHT = INIMIGO
- INIMIGO_LEFT = INIMIGO
- #tiro
- TIRO = carregar_imagem('./Imagens/tiro.png')
- TIRO = definir_dimensoes(TIRO,60,14)
- TIRO_LEFT = TIRO
- TIRO_RIGHT = TIRO
- TIRO_UP = girar(TIRO,90)
- TIRO_DOWN = girar(TIRO,-90)
- '''Outras constantes'''
- #layout 1
- L1_LIMITE_MEIO_ESQ = 250 - M_LARGURA_PERSONAGEM
- L1_LIMITE_MEIO_DIR = 460 + M_LARGURA_PERSONAGEM
- L1_LIMITE_MEIO_CIMA = 250 - M_ALTURA_PERSONAGEM
- L1_LIMITE_MEIO_BAIXO = 460 + M_ALTURA_PERSONAGEM
- L1_LIMITE_ESQUERDO = 55 + M_LARGURA_PERSONAGEM
- L1_LIMITE_DIREITO = LARGURA - 55 - M_LARGURA_PERSONAGEM
- L1_LIMITE_CIMA = 55 + M_ALTURA_PERSONAGEM
- L1_LIMITE_BAIXO = ALTURA - 55 - M_ALTURA_PERSONAGEM
- FREQUENCIA = 50
- VEL_PERSONAGEM = 5
- VEL_TIRO = 10
- ///////////////////////////////////////////////////////////////
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from funcoes import *
- from constantes import *
- from def_dados import *
- def main(inic):
- big_bang(inic,
- tela=tela,
- frequencia=FREQUENCIA,
- a_cada_tick=mover_jogo,
- desenhar=desenha_jogo,
- quando_tecla=trata_tecla_jogo,
- quando_solta_tecla=trata_tecla_solta_jogo,
- modo_debug=True)
- main(Jogo(Personagem(100, 100, 0, 0, 0), [], False, Inimigo(350, 100)))
- ///////////////////////////////////////////////////////////////////
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from htdp_pt_br.universe import *
- ''' Personagem:
- x e y = posição do personagem na tela
- dx e dy = a Variação de x e y
- posi = LEFT / RIGHT / UP / DOWN (direção)
- '''
- Personagem = definir_estrutura("Personagem", "x, y, dx, dy, direcao")
- '''Tiro:
- x e y = posição do tiro na tela
- direcao = LEFT / RIGHT / UP / DOWN (direção)
- '''
- Tiro = definir_estrutura("Tiro", "x, y, direcao")
- Inimigo = definir_estrutura("Inimigo", "x,y")
- '''Jogo:
- contem as estruturas Personagem e Tiro
- '''
- Jogo = definir_estrutura("Jogo","Personagem, Tiro, game_over, inimigo")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement