[go: up one dir, main page]

Menu

[r330]: / tda / frog.py  Maximize  Restore  History

Download this file

116 lines (88 with data), 3.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import math
import pygame
from pygame.locals import *
MAX_LENGTH = 300
screen = pygame.display.set_mode((640, 480))
head = pygame.image.load("frog_head.png")
head_open = pygame.image.load("frog_head_open.png")
legs = pygame.image.load("frog_legs.png")
locked_angle = 0
locked_mouse_pos = (0,0)
tongue_activated = False
tongue_length = 0
tongue_extending = False
tongue_retreating = False
done = False
mouse_pos = (0,0)
FROG_POS = (320,240)
while not done:
for e in pygame.event.get():
if e.type == QUIT:
done = True
elif e.type == KEYDOWN:
if e.key == K_ESCAPE:
done = True
elif e.type == MOUSEBUTTONDOWN:
tongue_activated = True
tongue_extending = True
tongue_retreating = False
elif e.type == MOUSEBUTTONUP:
tongue_extending = False
tongue_retreating = True
screen.fill((0,0,0))
mouse_pos = pygame.mouse.get_pos()
rel_mouse_pos = (mouse_pos[0]-FROG_POS[0], mouse_pos[1]-FROG_POS[1])
rect_dispx = 0
rect_dispy = 0
if rel_mouse_pos[1] == 0:
if rel_mouse_pos[0] < 0:
angle = -math.pi/2
else:
angle = math.pi/2
else:
angle = math.atan(float(rel_mouse_pos[0])/float(rel_mouse_pos[1]))
if rel_mouse_pos[1] >= 0:
angle += math.pi
angle += math.pi/3
#rect_dispx = math.cos(angle + math.pi/4) * 8 - 5
#rect_dispy = -math.sin(angle) * 10 + 3
rect_dispx = -6
rect_dispy = 3
if tongue_activated:
if tongue_extending:
if tongue_length < MAX_LENGTH:
tongue_length += 16
else:
tongue_extending = False
if tongue_retreating:
if tongue_length > 0:
tongue_length -= 32
else:
tongue_activated = False
locked_angle = angle
locked_mouse_pos = rel_mouse_pos
else:
rel_mouse_pos = locked_mouse_pos
angle = locked_angle
len = math.sqrt(math.pow(rel_mouse_pos[0],2) + math.pow(rel_mouse_pos[1],2))
end_pos = (FROG_POS[0] + int(rel_mouse_pos[0]*tongue_length/len),
FROG_POS[1] + int(rel_mouse_pos[1]*tongue_length/len))
pygame.draw.line(screen, (200,10,5), (FROG_POS[0] + rect_dispx,FROG_POS[1] + rect_dispy), end_pos, 2)
pygame.draw.circle(screen, (210,15,10), end_pos, 3)
if tongue_activated:
head_rotated = pygame.transform.rotate(head_open, 180.0/math.pi*angle)
else:
head_rotated = pygame.transform.rotate(head, 180.0/math.pi*angle)
locked_angle = angle
locked_mouse_pos = rel_mouse_pos
rect = head_rotated.get_rect()
rect.center = (FROG_POS[0] + rect_dispx,FROG_POS[1] + rect_dispy)
screen.blit(head_rotated, rect)
rect = legs.get_rect()
rect.center = (FROG_POS[0],FROG_POS[1])
screen.blit(legs, rect)
pygame.draw.line(screen, (255,255,255), (320,0), (320, 100))
pygame.draw.line(screen, (255,255,255), (320,380), (320, 480))
pygame.draw.line(screen, (255,255,255), (0,240), (100, 240))
pygame.draw.line(screen, (255,255,255), (540,240), (640, 240))
pygame.display.flip()