You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
6.0 KiB

# 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()