Skip to content

Commit 8abf9ac

Browse files
committed
init commit
1 parent 118b0a2 commit 8abf9ac

File tree

11 files changed

+543
-0
lines changed

11 files changed

+543
-0
lines changed

Chapter 6/6-1.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
5+
pygame.init()
6+
screen = pygame.display.set_mode((640, 480), 0, 32)
7+
8+
font = pygame.font.SysFont("arial", 32);
9+
font_height = font.get_linesize()
10+
11+
while True:
12+
13+
for event in pygame.event.get():
14+
if event.type == QUIT:
15+
pygame.quit()
16+
exit()
17+
18+
screen.fill((255, 255, 255))
19+
20+
pressed_key_text = []
21+
pressed_keys = pygame.key.get_pressed()
22+
y = font_height
23+
24+
25+
for key_constant, pressed in enumerate(pressed_keys):
26+
if pressed:
27+
key_name = pygame.key.name(key_constant)
28+
text_surface = font.render(key_name+" pressed", True, (0,0,0))
29+
screen.blit(text_surface, (8, y))
30+
y+= font_height
31+
32+
pygame.display.update()

Chapter 6/6-2.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
from gameobjects.vector2 import Vector2
5+
6+
background_image_filename = 'sushiplate.jpg'
7+
sprite_image_filename = 'fugu.png'
8+
9+
pygame.init()
10+
11+
screen = pygame.display.set_mode((640, 480), 0, 32)
12+
background = pygame.image.load(background_image_filename).convert()
13+
sprite = pygame.image.load(sprite_image_filename).convert_alpha()
14+
15+
clock = pygame.time.Clock()
16+
17+
sprite_pos = Vector2(200, 150)
18+
sprite_speed = 300
19+
20+
while True:
21+
22+
for event in pygame.event.get():
23+
if event.type == QUIT:
24+
pygame.quit()
25+
exit()
26+
27+
pressed_keys = pygame.key.get_pressed()
28+
29+
key_direction = Vector2(0, 0)
30+
31+
if pressed_keys[K_LEFT]:
32+
key_direction.x = -1
33+
elif pressed_keys[K_RIGHT]:
34+
key_direction.x = +1
35+
if pressed_keys[K_UP]:
36+
key_direction.y = -1
37+
elif pressed_keys[K_DOWN]:
38+
key_direction.y = +1
39+
40+
key_direction.normalize()
41+
42+
screen.blit(background, (0,0))
43+
screen.blit(sprite, (sprite_pos.x,sprite_pos.y))
44+
45+
time_passed = clock.tick(30)
46+
time_passed_seconds = time_passed / 1000.0
47+
48+
sprite_pos += key_direction * sprite_speed * time_passed_seconds
49+
50+
pygame.display.update()

Chapter 6/6-3.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
from gameobjects.vector2 import Vector2
5+
from math import *
6+
7+
background_image_filename = 'sushiplate.jpg'
8+
sprite_image_filename = 'fugu.png'
9+
10+
pygame.init()
11+
12+
screen = pygame.display.set_mode((640, 480), 0, 32)
13+
14+
background = pygame.image.load(background_image_filename).convert()
15+
sprite = pygame.image.load(sprite_image_filename).convert_alpha()
16+
17+
clock = pygame.time.Clock()
18+
19+
sprite_pos = Vector2(200, 150)
20+
sprite_speed = 300
21+
sprite_rotation = 0
22+
sprite_rotation_speed = 360 # Degrees per second
23+
24+
while True:
25+
26+
for event in pygame.event.get():
27+
if event.type == QUIT:
28+
pygame.quit()
29+
exit()
30+
pressed_keys = pygame.key.get_pressed()
31+
32+
rotation_direction = 0.
33+
movement_direction = 0.
34+
35+
if pressed_keys[K_LEFT]:
36+
rotation_direction = +1.0
37+
if pressed_keys[K_RIGHT]:
38+
rotation_direction = -1.0
39+
if pressed_keys[K_UP]:
40+
movement_direction = +1.0
41+
if pressed_keys[K_DOWN]:
42+
movement_direction = -1.0
43+
44+
screen.blit(background, (0,0))
45+
46+
rotated_sprite = pygame.transform.rotate(sprite, sprite_rotation)
47+
w, h = rotated_sprite.get_size()
48+
sprite_draw_pos = Vector2(sprite_pos.x-w/2, sprite_pos.y-h/2)
49+
screen.blit(rotated_sprite, (sprite_draw_pos.x,sprite_draw_pos.y))
50+
51+
time_passed = clock.tick()
52+
time_passed_seconds = time_passed / 1000.0
53+
54+
sprite_rotation += rotation_direction * sprite_rotation_speed * time_passed_seconds
55+
56+
heading_x = sin(sprite_rotation*pi/180.0)
57+
heading_y = cos(sprite_rotation*pi/180.0)
58+
heading = Vector2(heading_x, heading_y)
59+
heading *= movement_direction
60+
61+
sprite_pos+= heading * sprite_speed * time_passed_seconds
62+
63+
pygame.display.update()

Chapter 6/6-4.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
from gameobjects.vector2 import Vector2
5+
from math import *
6+
7+
background_image_filename = 'sushiplate.jpg'
8+
sprite_image_filename = 'fugu.png'
9+
10+
11+
pygame.init()
12+
screen = pygame.display.set_mode((640, 480), 0, 32)
13+
14+
background = pygame.image.load(background_image_filename).convert()
15+
sprite = pygame.image.load(sprite_image_filename).convert_alpha()
16+
17+
clock = pygame.time.Clock()
18+
19+
pygame.mouse.set_visible(False)
20+
pygame.event.set_grab(True)
21+
22+
sprite_pos = Vector2(200, 150)
23+
sprite_speed = 300.
24+
sprite_rotation = 0.
25+
sprite_rotation_speed = 360. # Degrees per second
26+
27+
while True:
28+
29+
for event in pygame.event.get():
30+
if event.type == QUIT:
31+
pygame.quit()
32+
exit()
33+
if event.type == KEYDOWN:
34+
if event.key == K_ESCAPE:
35+
pygame.quit()
36+
exit()
37+
38+
39+
pressed_keys = pygame.key.get_pressed()
40+
pressed_mouse = pygame.mouse.get_pressed()
41+
42+
rotation_direction = 0.
43+
movement_direction = 0.
44+
45+
rotation_direction = pygame.mouse.get_rel()[0] / 3.
46+
47+
if pressed_keys[K_LEFT]:
48+
rotation_direction = +1.
49+
if pressed_keys[K_RIGHT]:
50+
rotation_direction = -1.
51+
if pressed_keys[K_UP] or pressed_mouse[0]:
52+
movement_direction = +1.
53+
if pressed_keys[K_DOWN] or pressed_mouse[2]:
54+
movement_direction = -1.
55+
screen.blit(background, (0,0))
56+
57+
rotated_sprite = pygame.transform.rotate(sprite, sprite_rotation)
58+
w, h = rotated_sprite.get_size()
59+
sprite_draw_pos = Vector2(sprite_pos.x-w/2, sprite_pos.y-h/2)
60+
screen.blit(rotated_sprite, (sprite_draw_pos.x, sprite_draw_pos.y))
61+
62+
time_passed = clock.tick()
63+
time_passed_seconds = time_passed / 1000.0
64+
65+
sprite_rotation += rotation_direction * sprite_rotation_speed * time_passed_seconds
66+
67+
heading_x = sin(sprite_rotation*pi/180.)
68+
heading_y = cos(sprite_rotation*pi/180.)
69+
heading = Vector2(heading_x, heading_y)
70+
heading *= movement_direction
71+
72+
sprite_pos+= heading * sprite_speed * time_passed_seconds
73+
74+
pygame.display.update()

Chapter 6/6-5.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
5+
pygame.init()
6+
7+
SCREEN_SIZE = (640, 480)
8+
screen = pygame.display.set_mode( SCREEN_SIZE, 0, 32)
9+
10+
font = pygame.font.SysFont("arial", 16);
11+
font_height = font.get_linesize()
12+
event_text = []
13+
14+
joysticks = []
15+
for joystick_no in range(pygame.joystick.get_count()):
16+
stick = pygame.joystick.Joystick(joystick_no)
17+
stick.init()
18+
joysticks.append(stick)
19+
20+
21+
while True:
22+
23+
event = pygame.event.wait()
24+
if event.type in (JOYAXISMOTION,
25+
JOYBALLMOTION,
26+
JOYHATMOTION,
27+
JOYBUTTONUP,
28+
JOYBUTTONDOWN):
29+
event_text.append(str(event))
30+
31+
32+
event_text = event_text[int(-SCREEN_SIZE[1]/font_height):]
33+
34+
if event.type == QUIT:
35+
pygame.quit()
36+
exit()
37+
38+
screen.fill((255, 255, 255))
39+
40+
y = SCREEN_SIZE[1]-font_height
41+
for text in reversed(event_text):
42+
screen.blit( font.render(text, True, (0, 0, 0)), (0, y) )
43+
y-=font_height
44+
45+
pygame.display.update()

Chapter 6/6-6.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
from gameobjects.vector2 import Vector2
5+
6+
picture_file = 'map.jpg'
7+
8+
pygame.init()
9+
screen = pygame.display.set_mode((640, 480), 0, 32)
10+
11+
picture = pygame.image.load(picture_file).convert()
12+
picture_pos = Vector2(0, 0)
13+
scroll_speed = 1000.
14+
15+
clock = pygame.time.Clock()
16+
17+
joystick = None
18+
if pygame.joystick.get_count() > 0:
19+
joystick = pygame.joystick.Joystick(0)
20+
joystick.init()
21+
22+
if joystick is None:
23+
print("Sorry, you need a joystick for this!")
24+
pygame.quit()
25+
exit()
26+
27+
28+
while True:
29+
30+
for event in pygame.event.get():
31+
if event.type == QUIT:
32+
pygame.quit()
33+
exit()
34+
35+
scroll_direction = Vector2(*joystick.get_hat(0))
36+
scroll_direction.normalize()
37+
38+
screen.fill((255, 255, 255))
39+
screen.blit(picture, (-picture_pos.x, picture_pos.y))
40+
41+
time_passed = clock.tick()
42+
time_passed_seconds = time_passed / 1000.0
43+
44+
picture_pos += scroll_direction * scroll_speed * time_passed_seconds
45+
46+
pygame.display.update()

Chapter 6/6-7.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import pygame
2+
from pygame.locals import *
3+
from sys import exit
4+
from gameobjects.vector2 import Vector2
5+
6+
picture_file = 'map.jpg'
7+
8+
pygame.init()
9+
screen = pygame.display.set_mode((640, 480), 0, 32)
10+
11+
picture = pygame.image.load(picture_file).convert()
12+
picture_pos = Vector2(0, 0)
13+
scroll_speed = 1000.
14+
15+
clock = pygame.time.Clock()
16+
17+
joystick = None
18+
if pygame.joystick.get_count() > 0:
19+
joystick = pygame.joystick.Joystick(0)
20+
joystick.init()
21+
22+
if joystick is None:
23+
print("Sorry, you need a joystick for this!")
24+
pygame.quit()
25+
exit()
26+
27+
while True:
28+
29+
for event in pygame.event.get():
30+
if event.type == QUIT:
31+
pygame.quit()
32+
exit()
33+
34+
35+
scroll_direction = Vector2(0, 0)
36+
if joystick.get_numhats() > 0:
37+
scroll_direction = Vector2(*joystick.get_hat(0))
38+
scroll_direction.normalize()
39+
40+
analog_scroll = Vector2(0, 0)
41+
if joystick.get_numaxes() >= 2:
42+
axis_x = joystick.get_axis(0)
43+
axis_y = joystick.get_axis(1)
44+
analog_scroll = Vector2(axis_x, -axis_y)
45+
46+
screen.fill((255, 255, 255))
47+
screen.blit(picture, (-picture_pos.x, picture_pos.y))
48+
49+
time_passed = clock.tick()
50+
time_passed_seconds = time_passed / 1000.0
51+
52+
picture_pos += scroll_direction * scroll_speed * time_passed_seconds
53+
picture_pos += analog_scroll * scroll_speed * time_passed_seconds
54+
55+
pygame.display.update()

0 commit comments

Comments
 (0)