Hey guys. Ive been coding python for about a year now, and yesterday my older brother,who has no experience in programming at all, asked me when I was going to start programming video games. Is there some sort of test I can take to see if im ready for this type of programming? Thanks for all replies in advance.
1337455 10534 0 Light Poster
Very simple :);
Do you know what to do?
Do you even know what you want to do?
There's a wide variety of games...
I'm sure you've heard of Pygame.. why don't you test it out.
I made a lil star-wars thing in a week..
a1eio 16 Junior Poster
lol pygame is fun, give it a go.. hardly industry standard top notch gaming, but you can make some very interesting games :)
rysin 0 Light Poster
Leet, what do you think is the best way to approach pygame from a game making point of view? I used pygame for an app I did not to long ago, and that was my first encounter with it. But that wasnt making a game...
1337455 10534 0 Light Poster
Here is an interesting example I slightly modified.
import random, os, pygame
from pygame.locals import *
SCREEN_WIDTH = 742
SCREEN_HEIGHT = 600
def loadIageFile(name, useColorKey = False):
fullname = os.path.join( "data", name )
try:
image = pygame.image.load(fullname)
except pygame.error, message:
print "Cannot load image:", fullname
raise SystemExit, message
image = image.convert()
if useColorKey is True:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image
def loadSoundFile(name):
class NoneSound:
def play(self): pass
if not pygame.mixer or not pygame.mixer.get_init():
return NoneSound()
fullname = os.path.join("data", name)
try:
sound = pygame.mixer.Sound(fullname)
except pygame.error, message:
print "Cannot load sound:", fullname
raise SystemExit, message
return sound
class XWing(pygame.sprite.Sprite):
def __init__( self ):
pygame.sprite.Sprite.__init__( self )
self.image = loadIageFile("xwing.bmp", True)
self.rect = self.image.get_rect()
self.rect.center = (SCREEN_WIDTH/2,SCREEN_HEIGHT)
self.x_velocity = 0
self.y_velocity = 0
def update(self):
self.rect.move_ip((self.x_velocity, self.y_velocity))
if self.rect.left < 0:
self.rect.left = 0
elif self.rect.right > SCREEN_WIDTH:
self.rect.right = SCREEN_WIDTH
if self.rect.top <= SCREEN_HEIGHT/2:
self.rect.top = SCREEN_HEIGHT/2
elif self.rect.bottom >= SCREEN_HEIGHT:
self.rect.bottom = SCREEN_HEIGHT
class TIEFighter( pygame.sprite.Sprite ):
def __init__( self, startx ):
pygame.sprite.Sprite.__init__( self )
self.image = loadIageFile("tie_fighter.bmp", True)
self.rect = self.image.get_rect()
self.rect.centerx = startx
self.rect.centery = 120
self.x_velocity = random.randint(-7, 7)
self.y_velocity = random.randint(-7, 7)
def update(self):
self.rect.move_ip((self.x_velocity, self.y_velocity))
if self.rect.left < 0 or self.rect.right > SCREEN_WIDTH:
self.x_velocity = -(self.x_velocity)
if self.rect.top < 0 or self.rect.bottom > SCREEN_HEIGHT/2:
self.y_velocity = -(self.y_velocity)
fire = random.randint( 1, 70 )
if fire == 1:
tiefighterLaserSprites.add(TIEFighterLaser(self.rect.midbottom ))
tiefighterShotFX.play()
class XWingLaser(pygame.sprite.Sprite):
def __init__(self, startpos):
pygame.sprite.Sprite.__init__(self)
self.image = loadIageFile("rebel_laser.bmp", True)
self.rect = self.image.get_rect()
self.rect.center = startpos
def update(self):
if self.rect.bottom <= 0:
self.kill()
else:
self.rect.move_ip((0,-4))
class TIEFighterLaser(pygame.sprite.Sprite):
def __init__( self, startpos ):
pygame.sprite.Sprite.__init__( self )
self.image = loadIageFile("empire_laser.bmp", True)
self.rect = self.image.get_rect()
self.rect.midtop = startpos
def update(self):
if self.rect.bottom >= SCREEN_HEIGHT:
self.kill()
else:
self.rect.move_ip( (0,4) )
def main():
random.seed()
pygame.init()
#screen = pygame.display.set_mode( (SCREEN_WIDTH, SCREEN_HEIGHT), FULLSCREEN )
#screen = pygame.display.set_mode( (SCREEN_WIDTH, SCREEN_HEIGHT), HWSURFACE|DOUBLEBUF )
screen = pygame.display.set_mode( (SCREEN_WIDTH, SCREEN_HEIGHT) )
pygame.display.set_caption("Star Wars")
background_image = loadIageFile("background.bmp")
background_rect = background_image.get_rect()
screen.blit(background_image, (0,0))
#pygame.mouse.set_visible(False)
explode1FX = loadSoundFile("explode1.wav")
#explode2FX = loadSoundFile( "explode2.wav" )
global tiefighterShotFX
tiefighterShotFX = loadSoundFile("empire_laser.wav")
xwingShotFX = loadSoundFile("rebel_laser.wav")
xwingSprite = pygame.sprite.RenderClear()
xwing = XWing()
xwingSprite.add(xwing)
xwingLaserSprites = pygame.sprite.RenderClear()
tiefighterSprites = pygame.sprite.RenderClear()
tiefighterSprites.add(TIEFighter(150))
tiefighterSprites.add(TIEFighter(400))
tiefighterSprites.add(TIEFighter(650))
global tiefighterLaserSprites
tiefighterLaserSprites = pygame.sprite.RenderClear()
running = True
addTieFighterCounter = 0
clock = pygame.time.Clock()
while running is True:
clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
running = False
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
running = False
elif event.key == K_LEFT:
xwing.x_velocity = -4
elif event.key == K_RIGHT:
xwing.x_velocity = 4
elif event.key == K_UP:
xwing.y_velocity = -4
elif event.key == K_DOWN:
xwing.y_velocity = 4
elif event.key == K_SPACE:
xwingLaserSprites.add( XWingLaser(xwing.rect.midtop))
xwingShotFX.play()
elif event.type == KEYUP:
if event.key == K_LEFT:
xwing.x_velocity = 0
elif event.key == K_RIGHT:
xwing.x_velocity = 0
elif event.key == K_UP:
xwing.y_velocity = 0
elif event.key == K_DOWN:
xwing.y_velocity = 0
addTieFighterCounter += 1
if addTieFighterCounter >= 200:
tiefighterSprites.add( TIEFighter( 320 ) )
addTieFighterCounter = 0
xwingSprite.update()
xwingLaserSprites.update()
tiefighterSprites.update()
tiefighterLaserSprites.update()
for hit in pygame.sprite.groupcollide(tiefighterSprites, xwingLaserSprites, 1, 1):
explode1FX.play()
tiefighterLaserSprites.clear(screen, background_image)
tiefighterSprites.clear(screen, background_image)
xwingLaserSprites.clear(screen, background_image)
xwingSprite.clear( screen, background_image)
tiefighterLaserSprites.draw( screen )
xwingLaserSprites.draw(screen)
tiefighterSprites.draw(screen)
xwingSprite.draw(screen)
pygame.display.flip()
main()
This attachment is potentially unsafe to open. It may be an executable that is capable of making changes to your file system, or it may require specific software to open. Use caution and only open this attachment if you are comfortable working with zip files.
rysin 0 Light Poster
Can you explain your code for me please? And if you dont have time to run through all of it can you run me through one of the class's. Like what is a rect? ALthough ive used __init__ before in some GUI builder(Tkinter I believe), I never really understood it. SO if you can run through those for me. Or you can just not run through any of it, which is fine to.
1337455 10534 0 Light Poster
You're looking for this; http://www.codesampler.com/python.htm
I just messed with size dimensions, speed and crap to learn a bit of pygame.
The original is well commented (I tested out a script to remove all #'s from a file on it).
Its the 'simple star wars game'
rysin 0 Light Poster
Thanks again leet! If I have questions about pygame can I post em here or do I have to post them in game development... Thanks for all who replied!
1337455 10534 0 Light Poster
np :D, I have a lot of time to spare.
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.