How can I modify this programm to be able to move the yellow dot with the keys of a keyboard?
# -*- coding: cp1252 -*-
## Michael ELBAZ
## AE(a)
full_screen = True
window_size = (1024, 768)
import sys, random, pygame, os, platform
from pygame.locals import *
from math import *
delta=2
delta_step=1
circles = ((0, delta),)
circle_scale = 0.3
circle_radius = 8
n_grid = 3
grid_spacing = 0.2
grid_length = 0.05
grid_width = 2
rotation_speed = pi/2
grid_color = (100, 100, 255)
fix_radius = 8
bg_color = (0, 0, 0)
circle_color = (255, 255, 0)
disapp_frames = 1
window_center = (window_size[0]/2.0, window_size[1]/2.0)
window_scale = min(window_size)/2.0
def coord(real):
"""takes real coordinates, returns pixel coordinates"""
return (int(round(real[0]*window_scale + window_center[0])),\
int(round(-real[1]*window_scale + window_center[1])))
g_cos, g_sin = 1, 0
def set_rotation(angle):
"""sets up rotation"""
global g_cos, g_sin
g_cos, g_sin = cos(angle), sin(angle)
def rotate(point):
"""rotates a 3D point about the Z-axis by given angle set by set_rotation()"""
return (g_cos*point[0] + g_sin*point[1], -g_sin*point[0] + g_cos*point[1])
# graphics initializations
frames, show = 0, True
try:
pygame.init()
if full_screen:
surf = pygame.display.set_mode(window_size, HWSURFACE | FULLSCREEN | DOUBLEBUF)
else:
surf = pygame.display.set_mode(window_size)
t0 = pygame.time.get_ticks()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
raise Exception()
elif event.type == MOUSEBUTTONDOWN: frames, show = 0, False
elif event.type == MOUSEBUTTONUP: frames, show = 0, True
for circ in circles:
c = (circle_scale*circ[0], circle_scale*circ[1])
if show:
col = (150, 150, 0)
pygame.draw.circle(surf, col, coord(c), circle_radius, 0)
else:
step = 150/disapp_frames
lev = max(0, 150 - frames*step)
col = (lev, lev, 0)
if lev > 0:
pygame.draw.circle(surf, col, coord(c), circle_radius, 0)
for event in pygame.event.get():
if event.key == K_LEFT:
delta -= delta_step
if event.key == K_RIGHT:
delta += delta_step
if show:
col = (150, 150, 0)
pygame.draw.circle(surf, col, coord(c), circle_radius, 0)
else:
step = 150/disapp_frames
lev = max(0, 150 - frames*step)
col = (lev, lev, 0)
if lev > 0:
pygame.draw.circle(surf, col, coord(c), circle_radius, 0)
pygame.draw.circle(surf, grid_color, coord((0, 0)), fix_radius)
pygame.display.flip()
frames += 1
finally: pygame.quit()