parent
49fe9ceeda
commit
d11ac1228b
@ -1,129 +1,3 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
pip-wheel-metadata/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
*.pyc
|
||||
/**/*.pyc
|
||||
.idea/
|
||||
|
@ -1,2 +1,16 @@
|
||||
# proto-pygame
|
||||
A prototype of a game I did long ago with the library pygame
|
||||
# PYGAME BASICS DEMO
|
||||
|
||||
This was originally developed to learn the basics of PyGame, such as loading sprites into the screen and collision detection.
|
||||
It was part of an university project in October 2012.
|
||||
|
||||
### Controlling the car
|
||||
Use the arrow keys to move the car through the screen.
|
||||
|
||||
|
||||
### Updates
|
||||
|
||||
Now I've taken off the old graphics and added some sprites from some old NES video games. I redesigned the screen collisions. Just kept a few rectangles so the car doesn't go outside of the screen. Added rotation of the car's sprite (the shadow of the car doesn't make any sense!). See it working here: https://youtu.be/vG2cFlU25kE
|
||||
|
||||
### Legal stuff
|
||||
|
||||
Graphics taken from some old game's sprites. Music by *Haddaway*. This was made to learn, no copyright violation intended.
|
||||
|
@ -0,0 +1,167 @@
|
||||
# Juego prueba -Jueves 4 / 10 / 2012- escuela 200, MakeUy
|
||||
# NEXO 2012, Nicolas Novalic
|
||||
import pygame
|
||||
import random
|
||||
import pygame
|
||||
|
||||
SPRITE_SIZE = 62
|
||||
SPRITE_STEP = 20
|
||||
SCREEN_SIZE_X = 1240
|
||||
SCREEN_SIZE_Y = 744
|
||||
INITIAL_POSITION_PLAYER_X = SCREEN_SIZE_X / 2 - SPRITE_SIZE
|
||||
INITIAL_POSITION_PLAYER_Y = SCREEN_SIZE_Y / 2
|
||||
|
||||
#GRAPHICS
|
||||
WATER_IMG = pygame.image.load("media/water.png")
|
||||
COAST_IMG = pygame.image.load("media/coast.png")
|
||||
SAND_IMG = pygame.image.load("media/floor.png")
|
||||
|
||||
|
||||
class Recs(object):
|
||||
def __init__(self):
|
||||
self.collision_list=[]
|
||||
self.collision_list.append(pygame.Rect(0, 0, 20, SCREEN_SIZE_Y)) # CANT GO OFF SCREEN ON THE LEFT
|
||||
self.collision_list.append(pygame.Rect(SCREEN_SIZE_X - 20, 0, 20, SCREEN_SIZE_Y)) # DITTO RIGHT
|
||||
self.collision_list.append(pygame.Rect(0, SCREEN_SIZE_Y - 20, SCREEN_SIZE_X, 20)) # DITTO DOWN
|
||||
self.collision_list.append(pygame.Rect(0, 0, SCREEN_SIZE_X, 62)) # DITTO UP
|
||||
|
||||
class Player(pygame.sprite.Sprite):
|
||||
def __init__(self, player_img):
|
||||
self.player_img = player_img
|
||||
self.rect = self.player_img.get_rect()
|
||||
self.rect.top,self.rect.left = (INITIAL_POSITION_PLAYER_Y, INITIAL_POSITION_PLAYER_X)
|
||||
|
||||
def change_position(self,vx,vy):
|
||||
self.rect.move_ip(vx,vy)
|
||||
|
||||
def update(self,layer):
|
||||
layer.blit(self.player_img, self.rect)
|
||||
|
||||
def rotate_position(self, angle):
|
||||
self.player_img = pygame.transform.rotate(self.player_img, angle)
|
||||
|
||||
def collision_detector(player,recs):
|
||||
for rec in recs.collision_list:
|
||||
if player.rect.colliderect(rec):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
#SCREEN SETUP
|
||||
pygame.init()
|
||||
screen = pygame.display.set_mode((SCREEN_SIZE_X, SCREEN_SIZE_Y))
|
||||
pygame.display.set_caption("8 bit Game Demo")
|
||||
game_clock = pygame.time.Clock()
|
||||
PLAYER_IMG = pygame.image.load("media/car.png").convert_alpha()
|
||||
#MUSIC
|
||||
pygame.mixer.music.load("media/music.mp3")
|
||||
pygame.mixer.music.set_volume(0.5)
|
||||
pygame.mixer.music.play(-1)
|
||||
#GAME SET UP
|
||||
quit_game = False
|
||||
vx,vy = 0,0
|
||||
screen_recs = Recs()
|
||||
player1 = Player(PLAYER_IMG)
|
||||
collision = False
|
||||
direction = "UP"
|
||||
|
||||
#MAIN LOOP
|
||||
while quit_game != True:
|
||||
|
||||
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
quit_game = True
|
||||
|
||||
#MOVEMENT
|
||||
if collision == False:
|
||||
if event.type == pygame.KEYDOWN:
|
||||
|
||||
if event.key == pygame.K_LEFT:
|
||||
if direction == "UP":
|
||||
player1.rotate_position(90)
|
||||
elif direction == "RIGHT":
|
||||
player1.rotate_position(180)
|
||||
elif direction == "DOWN":
|
||||
player1.rotate_position(270)
|
||||
direction = "LEFT"
|
||||
|
||||
player1.change_position(-1 * SPRITE_STEP, 0)
|
||||
if collision_detector(player1,screen_recs):
|
||||
player1.change_position(SPRITE_STEP, 0)
|
||||
|
||||
if event.key == pygame.K_RIGHT:
|
||||
if direction == "DOWN":
|
||||
player1.rotate_position(90)
|
||||
elif direction == "LEFT":
|
||||
player1.rotate_position(180)
|
||||
elif direction == "UP":
|
||||
player1.rotate_position(270)
|
||||
direction = "RIGHT"
|
||||
|
||||
player1.change_position(SPRITE_STEP, 0)
|
||||
if collision_detector(player1,screen_recs):
|
||||
player1.change_position(-1 * SPRITE_STEP, 0)
|
||||
|
||||
if event.key == pygame.K_UP:
|
||||
if direction == "RIGHT":
|
||||
player1.rotate_position(90)
|
||||
elif direction == "DOWN":
|
||||
player1.rotate_position(180)
|
||||
elif direction == "LEFT":
|
||||
player1.rotate_position(270)
|
||||
direction = "UP"
|
||||
|
||||
player1.change_position(0,-1 * SPRITE_STEP)
|
||||
if collision_detector(player1, screen_recs):
|
||||
player1.change_position(0, SPRITE_STEP)
|
||||
|
||||
if event.key == pygame.K_DOWN:
|
||||
if direction == "LEFT":
|
||||
player1.rotate_position(90)
|
||||
elif direction == "UP":
|
||||
player1.rotate_position(180)
|
||||
elif direction == "RIGHT":
|
||||
player1.rotate_position(270)
|
||||
direction = "DOWN"
|
||||
|
||||
player1.change_position(0, SPRITE_STEP)
|
||||
if collision_detector(player1, screen_recs):
|
||||
player1.change_position(0,-1 * SPRITE_STEP)
|
||||
|
||||
|
||||
if event.type == pygame.KEYUP:
|
||||
if event.key == pygame.K_3:
|
||||
vx = 0
|
||||
if event.key == pygame.K_2:
|
||||
vx = 0
|
||||
if event.key== pygame.K_SPACE:
|
||||
vy = 0
|
||||
if event.key == pygame.K_4:
|
||||
vy = 0
|
||||
|
||||
game_clock.tick(20)
|
||||
if collision == False:
|
||||
player1.change_position(vx, vy)
|
||||
|
||||
|
||||
# PRINT GRAPHICS
|
||||
range_x = SCREEN_SIZE_X / SPRITE_SIZE
|
||||
range_y = SCREEN_SIZE_Y / SPRITE_SIZE
|
||||
for printing_x in range(0, range_x):
|
||||
for printing_y in range(1, range_y):
|
||||
screen.blit(SAND_IMG, (SPRITE_SIZE * printing_x, SPRITE_SIZE * printing_y))
|
||||
|
||||
for printing in range(0, range_x):
|
||||
screen.blit(WATER_IMG, (SPRITE_SIZE * printing,0))
|
||||
screen.blit(COAST_IMG, (SPRITE_SIZE * printing, SPRITE_SIZE))
|
||||
|
||||
player1.update(screen)
|
||||
pygame.display.update()
|
||||
|
||||
pygame.quit()
|
||||
|
||||
main()
|
After Width: | Height: | Size: 412 B |
After Width: | Height: | Size: 534 B |
After Width: | Height: | Size: 322 B |
Binary file not shown.
After Width: | Height: | Size: 521 B |
Loading…
Reference in new issue