Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 161 additions & 0 deletions Paulo/Bilhar_2_Bolas
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
#https://py3.codeskulptor.org/#user304_cgY1V8XamMCvNOF.py
#Colisão entre 2 bolas - Teste
#Feito por Paulo Victor

import simplegui

# inicializa as variáveis globais
LARGURA = 600
ALTURA = 400
RAIO_BOLA = 20
cont = 0
diametro = RAIO_BOLA * 2

#Defini a posição inical das 2 bolas
ball_pos = [LARGURA / 3, ALTURA / 2]
ball_pos2 = [LARGURA - (RAIO_BOLA * 2) + 5, ALTURA / 2]

#Defini o movimento inicial de cada bola
vel = [2, 3]
vel2 = [0, 0]

# define os event handlers
def draw(canvas):

global ball_pos, vel, ball_pos2, vel2

# Atualiza a pisição da bola1
ball_pos[0] = ball_pos[0] + vel[0]
ball_pos[1] = ball_pos[1] + vel[1]

# Atualiza a pisição da bola2
ball_pos2[0] = ball_pos2[0] + vel2[0]
ball_pos2[1] = ball_pos2[1] + vel2[1]

reflexao_Bola1_Bola2()
reflexao_Bola1_Parede()
reflexao_Bola2_Parede()

# Desenha as bolas
canvas.draw_circle(ball_pos, RAIO_BOLA, 2, "white", "White")
canvas.draw_circle(ball_pos2, RAIO_BOLA, 2, "blue", "blue")


def reflexao_Bola1_Parede():
global ball_pos, vel, ball_pos2, vel2

# Reflexão com a parede a direita
if ball_pos[0] > LARGURA - RAIO_BOLA:
vel[0] = -1 * vel[0]

# Reflexão com a parede a esquerda
if ball_pos[0] < RAIO_BOLA:
vel[0] = -1 * vel[0]

# Reflexão com a parede em cima
if ball_pos[1] > ALTURA - RAIO_BOLA:
vel[1] = -1 * vel[1]

# Reflexão com a parede em baixo
if ball_pos[1] < RAIO_BOLA:
vel[1] = -1 * vel[1]


def reflexao_Bola2_Parede():
global ball_pos, vel, ball_pos2, vel2

# Reflexão com a parede a direita
if ball_pos2[0] > LARGURA - RAIO_BOLA:
vel2[0] = -1 * vel2[0]

# Reflexão com a parede a esquerda
if ball_pos2[0] < RAIO_BOLA:
vel2[0] = -1 * vel2[0]

# Reflexão com a parede em cima
if ball_pos2[1] > ALTURA - RAIO_BOLA:
vel2[1] = -1 * vel2[1]

# Reflexão com a parede em baixo
if ball_pos2[1] < RAIO_BOLA:
vel2[1] = -1 * vel2[1]


def reflexao_Bola1_Bola2():
global ball_pos, vel, ball_pos2, vel2, cont, diametro

if cont == 1:
if(ball_pos[0] - ball_pos2[0] > 0 and ball_pos[0] - ball_pos2[0] <= diametro):
if(ball_pos[1] - ball_pos2[1] > 0 and ball_pos[1] - ball_pos2[1] <= diametro):
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

elif(ball_pos2[1] - ball_pos[1] and ball_pos2[1] - ball_pos[1] <= diametro):
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

elif(ball_pos2[0] - ball_pos[0] > 0 and ball_pos2[0] - ball_pos[0] <= diametro):
if(ball_pos[1] - ball_pos2[1] > 0 and ball_pos[1] - ball_pos2[1] <= diametro):
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

elif(ball_pos2[1] - ball_pos[1] and ball_pos2[1] - ball_pos[1] <= diametro):
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

else:
if(ball_pos[0] - ball_pos2[0] > 0 and ball_pos[0] - ball_pos2[0] <= diametro + 1):
if(ball_pos[1] - ball_pos2[1] > 0 and ball_pos[1] - ball_pos2[1] <= diametro):
vel2[0] = 2
vel2[1] = 2
cont = 1
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

elif(ball_pos2[1] - ball_pos[1] and ball_pos2[1] - ball_pos[1] <= diametro):
vel2[0] = 2
vel2[1] = 2
cont = 1
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

elif(ball_pos2[0] - ball_pos[0] > 0 and ball_pos2[0] - ball_pos[0] <= diametro + 1):
if(ball_pos[1] - ball_pos2[1] > 0 and ball_pos[1] - ball_pos2[1] <= diametro):
vel2[0] = 2
vel2[1] = 2
cont = 1
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]

elif(ball_pos2[1] - ball_pos[1] and ball_pos2[1] - ball_pos[1] <= diametro):
vel2[0] = 2
vel2[1] = 2
cont = 1
vel2[0] = -1 * vel2[0]
vel2[1] = -1 * vel2[1]
vel[0] = -1 * vel[0]
vel[1] = -1 * vel[1]


# cria o frame
frame = simplegui.create_frame("Colisão entre 2 bolas", LARGURA, ALTURA)

# registra os event handlers
frame.set_draw_handler(draw)

# inicia frame
frame.start()
118 changes: 118 additions & 0 deletions Paulo/Largar_Bola
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
#Disponivel em - https://py3.codeskulptor.org/#user304_7Wf6JjQ7yMnhkPU.py
#Programa criado por Paulo Victor
#Início em 10/09/2019
import simplegui

RAIO_BOLA = 20
largura = 600
altura = 400
brancaPosicao = [RAIO_BOLA + 10,altura/2]
velo = 4
linhaFinal = brancaPosicao
vel = [0, 0]

def mouse_handler(pos):
global fator, linhaFinal, brancaPosicao

linhaFinal = pos


def velocidade(text):
global velo

if(int(text) <= 0):
print("-----------------------------------------------")
print("Não é permitido velocidade menor ou igual a a 0")
print("-----------------------------------------------")
else:
velo = velo * int(text)


def draw(canvas):
global brancaPosicao, vel, linhaFinal, velo

veloDist0 = velo * vel[0]
veloDist1 = velo * vel[1]

brancaPosicao[0] = brancaPosicao[0] + veloDist0
brancaPosicao[1] = brancaPosicao[1] + veloDist1

reflexao_BolaBranca_Parede()

canvas.draw_line(brancaPosicao, linhaFinal, 4, "white")
canvas.draw_circle(brancaPosicao, RAIO_BOLA, 2, "white", "White")


def lancar_botao(key):
global linhaFinal, brancaPosicao, vel, velo

if key == simplegui.KEY_MAP["space"]:
larg = linhaFinal[0] - brancaPosicao[0]
altu = linhaFinal[1] - brancaPosicao[1]

linhaFinal = brancaPosicao

modulo = (larg**2 + altu**2) ** (1/2)

try:
vel[0] = larg / modulo
vel[1] = altu / modulo

except ZeroDivisionError:
print("--------------------------------------")
print("Escolha uma posição para lançar a bola")
print("--------------------------------------")


def resetar_botao():
global linhaFinal, brancaPosicao, vel

RAIO_BOLA = 20
largura = 600
altura = 400
brancaPosicao = [RAIO_BOLA + 10,altura/2]
velo = 4
linhaFinal = brancaPosicao
vel[0] = 0
vel[1] = 0


def reflexao_BolaBranca_Parede():
global brancaPosicao, vel, largura, RAIO_BOLA, altura

# Reflexão com a parede a direita
if brancaPosicao[0] > largura - RAIO_BOLA:
vel[0] = -1 * vel[0]

# Reflexão com a parede a esquerda
if brancaPosicao[0] < RAIO_BOLA:
vel[0] = -1 * vel[0]

# Reflexão com a parede em cima
if brancaPosicao[1] > altura - RAIO_BOLA:
vel[1] = -1 * vel[1]

# Reflexão com a parede em baixo
if brancaPosicao[1] < RAIO_BOLA:
vel[1] = -1 * vel[1]


#cria o frame
frame = simplegui.create_frame('JOGO', largura, altura)

#define a função para tratar o evento do mouse
frame.set_mousedrag_handler(mouse_handler)

#escolhe o tratador do canvas
frame.set_draw_handler(draw)

#adiciona os input no frame
inp = frame.add_input('Velocidade', velocidade, 50)

#adiciona os botões no frame
frame.set_keydown_handler(lancar_botao)
resetar_botao = frame.add_button('Resetar', resetar_botao)

#inicia o frame
frame.start()