Hi,
I've edited the aliens.py example to make my character just move
back and forth. However I can't make him jump!
Here's my code (attached). I'm trying to make a platformer Mario style game.
Thanks,
Joe
############################################
# Side Scroller v 0.1 a very simple Super #
# Mario type game engine #
# #
# Created by Joseph Quigley #
# Released under the GNU GPL (any version) #
############################################
import os, sys
import pygame
from pygame.locals import *
#import random
import time
if not pygame.font: print 'Warning, fonts disabled'
if not pygame.mixer: print 'Warning, sound disabled'
#see if we can load more than standard BMP
if not pygame.image.get_extended():
raise SystemExit, "Sorry, extended image module required"
SCREENRECT = Rect(0, 0, 640, 480)
def load_image(file):
"loads an image, prepares it for play"
file = os.path.join('data', file)
try:
surface = pygame.image.load(file)
except pygame.error:
raise SystemExit, 'Could not load image "%s" %s'%(file,
pygame.get_error())
return surface.convert()
def load_images(*files):
imgs = []
for file in files:
imgs.append(load_image(file))
return imgs
class dummysound:
def play(self): pass
def load_sound(file):
if not pygame.mixer: return dummysound()
file = os.path.join('data', file)
try:
sound = pygame.mixer.Sound(file)
return sound
except pygame.error:
print 'Warning, unable to load,', file
return dummysound()
# each type of game object gets an init and an
# update function. the update function is called
# once per frame, and it is when each object should
# change it's current position and state. the Player
# object actually gets a "move" function instead of
# update, since it is passed extra information about
# the keyboard
class Player(pygame.sprite.Sprite):
speed = 10
bounce = 1
images = []
def __init__(self):
pygame.sprite.Sprite.__init__(self, self.containers)
self.image = self.images[0]
self.rect = self.image.get_rect(midbottom=SCREENRECT.midbottom)
self.reloading = 0
self.origtop = self.rect.top
self.facing = -1
def move(self, direction):
if direction: self.facing = direction
self.rect.move_ip(direction*self.speed, 0)
self.rect = self.rect.clamp(SCREENRECT)
if direction < 0:
self.image = self.images[0]
elif direction > 0:
self.image = self.images[1]
self.rect.top = self.origtop - (self.rect.left/self.bounce%2)
def main(winstyle = 0):
# Initialize pygame
pygame.init()
if pygame.mixer and not pygame.mixer.get_init():
print 'Warning, no sound'
pygame.mixer = None
# Set the display mode
winstyle = 0 # |FULLSCREEN
bestdepth = pygame.display.mode_ok(SCREENRECT.size, winstyle, 32)
screen = pygame.display.set_mode(SCREENRECT.size, winstyle, bestdepth)
#Load images, assign to sprite classes
#(do this before the classes are used, after screen setup)
img = load_image('images/shared/largetux-walk-left-1.png')
Player.images = [img, pygame.transform.flip(img, 1, 0)]
#decorate the game window
#icon = pygame.transform.scale(Alien.images[0], (32, 32))
#pygame.display.set_icon(icon)
pygame.display.set_caption('CCN 2 Month Game')
pygame.mouse.set_visible(1)
#create the background, tile the bgd image
bgdtile = load_image('background.gif')
background = pygame.Surface(SCREENRECT.size)
for x in range(0, SCREENRECT.width, bgdtile.get_width()):
background.blit(bgdtile, (x, 0))
screen.blit(background, (0,0))
pygame.display.flip()
#load the sound effects
if pygame.mixer:
music = os.path.join('data', 'house_lo.wav')
pygame.mixer.music.load(music)
pygame.mixer.music.play(-1)
# Initialize Game Groups
shots = pygame.sprite.Group()
all = pygame.sprite.RenderUpdates()
#assign default groups to each sprite class
Player.containers = all
#Shot.containers = shots, all
#Create Some Starting Values
clock = pygame.time.Clock()
#initialize our starting sprites
player = Player()
while player.alive():
#get input
for event in pygame.event.get():
if event.type == QUIT or \
(event.type == KEYDOWN and event.key == K_ESCAPE):
return
keystate = pygame.key.get_pressed()
# clear/erase the last drawn sprites
all.clear(screen, background)
#update all the sprites
all.update()
direction = ''
#handle player input
direction = keystate[K_RIGHT] - keystate[K_LEFT]
player.move(direction)
# time.sleep(.05)
#draw the scene
dirty = all.draw(screen)
pygame.display.update(dirty)
#cap the framerate
clock.tick(40)
if pygame.mixer:
pygame.mixer.music.fadeout(1000)
pygame.time.wait(1000)
#call the "main" function if running this script
if __name__ == '__main__': main()
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor