Final exam version
This commit is contained in:
119
venv/lib/python3.12/site-packages/pygame/examples/moveit.py
Normal file
119
venv/lib/python3.12/site-packages/pygame/examples/moveit.py
Normal file
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python
|
||||
""" pygame.examples.moveit
|
||||
|
||||
This is the full and final example from the Pygame Tutorial,
|
||||
"How Do I Make It Move". It creates 10 objects and animates
|
||||
them on the screen.
|
||||
|
||||
It also has a separate player character that can be controlled with arrow keys.
|
||||
|
||||
Note it's a bit scant on error checking, but it's easy to read. :]
|
||||
Fortunately, this is python, and we needn't wrestle with a pile of
|
||||
error codes.
|
||||
"""
|
||||
import os
|
||||
import pygame as pg
|
||||
|
||||
main_dir = os.path.split(os.path.abspath(__file__))[0]
|
||||
|
||||
# Height and Width of screen
|
||||
WIDTH = 640
|
||||
HEIGHT = 480
|
||||
# Height and width of the sprite
|
||||
SPRITE_WIDTH = 80
|
||||
SPRITE_HEIGHT = 60
|
||||
|
||||
|
||||
# our game object class
|
||||
class GameObject:
|
||||
def __init__(self, image, height, speed):
|
||||
self.speed = speed
|
||||
self.image = image
|
||||
self.pos = image.get_rect().move(0, height)
|
||||
|
||||
# move the object.
|
||||
def move(self, up=False, down=False, left=False, right=False):
|
||||
if right:
|
||||
self.pos.right += self.speed
|
||||
if left:
|
||||
self.pos.right -= self.speed
|
||||
if down:
|
||||
self.pos.top += self.speed
|
||||
if up:
|
||||
self.pos.top -= self.speed
|
||||
|
||||
# controls the object such that it cannot leave the screen's viewpoint
|
||||
if self.pos.right > WIDTH:
|
||||
self.pos.left = 0
|
||||
if self.pos.top > HEIGHT - SPRITE_HEIGHT:
|
||||
self.pos.top = 0
|
||||
if self.pos.right < SPRITE_WIDTH:
|
||||
self.pos.right = WIDTH
|
||||
if self.pos.top < 0:
|
||||
self.pos.top = HEIGHT - SPRITE_HEIGHT
|
||||
|
||||
|
||||
# quick function to load an image
|
||||
def load_image(name):
|
||||
path = os.path.join(main_dir, "data", name)
|
||||
return pg.image.load(path).convert()
|
||||
|
||||
|
||||
# here's the full code
|
||||
def main():
|
||||
pg.init()
|
||||
clock = pg.time.Clock()
|
||||
screen = pg.display.set_mode((WIDTH, HEIGHT))
|
||||
|
||||
player = load_image("player1.gif")
|
||||
entity = load_image("alien1.gif")
|
||||
background = load_image("liquid.bmp")
|
||||
|
||||
# scale the background image so that it fills the window and
|
||||
# successfully overwrites the old sprite position.
|
||||
background = pg.transform.scale2x(background)
|
||||
background = pg.transform.scale2x(background)
|
||||
|
||||
screen.blit(background, (0, 0))
|
||||
|
||||
objects = []
|
||||
p = GameObject(player, 10, 3)
|
||||
for x in range(10):
|
||||
o = GameObject(entity, x * 40, x)
|
||||
objects.append(o)
|
||||
|
||||
pg.display.set_caption("Move It!")
|
||||
|
||||
# This is a simple event handler that enables player input.
|
||||
while True:
|
||||
# Get all keys currently pressed, and move when an arrow key is held.
|
||||
keys = pg.key.get_pressed()
|
||||
if keys[pg.K_UP]:
|
||||
p.move(up=True)
|
||||
if keys[pg.K_DOWN]:
|
||||
p.move(down=True)
|
||||
if keys[pg.K_LEFT]:
|
||||
p.move(left=True)
|
||||
if keys[pg.K_RIGHT]:
|
||||
p.move(right=True)
|
||||
|
||||
# Draw the background
|
||||
screen.blit(background, (0, 0))
|
||||
for e in pg.event.get():
|
||||
# quit upon screen exit
|
||||
if e.type == pg.QUIT:
|
||||
return
|
||||
for o in objects:
|
||||
screen.blit(background, o.pos, o.pos)
|
||||
for o in objects:
|
||||
o.move(right=True)
|
||||
screen.blit(o.image, o.pos)
|
||||
screen.blit(p.image, p.pos)
|
||||
clock.tick(60)
|
||||
pg.display.update()
|
||||
pg.time.delay(100)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
pg.quit()
|
||||
Reference in New Issue
Block a user