Skip to content

Instantly share code, notes, and snippets.

@kingsman142
Created April 29, 2012 00:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kingsman142/2522848 to your computer and use it in GitHub Desktop.
Save kingsman142/2522848 to your computer and use it in GitHub Desktop.
Python RPG
import random
import pygame
import time
import sys
import math
from pygame import *
pygame.init()
pygame.time.set_timer(USEREVENT+1, 1000)
bit = 16
size = (800, 600)
screen = pygame.display.set_mode(size, bit)
pygame.display.set_caption("RPG")
moveX = 0
moveY = 0
characterX = 0
characterY = 0
randX = random.uniform(0, 800)
randY = random.uniform(0, 600)
robs = {'rect': pygame.Rect(randX, randY, 32, 60), 'surface': 'robot.png'}
robots = []
class knight:
defaultCharacter = pygame.image.load('knight.png')
defaultCharacter2 = pygame.transform.scale(defaultCharacter, (44, 64))
class mage:
mageSprite = pygame.image.load('mage.png')
mageSprite2 = pygame.transform.scale(mageSprite, (54, 81))
class ranger:
rangerSprite = pygame.image.load('ranger.png')
rangerSprite2 = pygame.transform.scale(rangerSprite, (56, 70))
class robot:
robotSprite = pygame.image.load('robot.png')
robotSprite2 = pygame.transform.scale(robotSprite, (32, 60))
def attack(self, characterX, characterY, randX, randY):
for r in robots:
if r['rect'][0] < characterX:
r['rect'][0] += 1
elif r['rect'][0] > characterX:
r['rect'][0] -= 1
if r['rect'][1] < characterY:
r['rect'][1] += 1
elif r['rect'][1] > characterY:
r['rect'][1] -= 1
knight = knight()
mage = mage()
ranger = ranger()
robot = robot()
map1 = pygame.image.load('map1.png')
map1s = pygame.transform.scale(map1, (800,600))
map2 = pygame.image.load('map2.png')
map3 = pygame.image.load('map3.png')
map4 = pygame.image.load('map4.png')
map5 = pygame.image.load('map5.png')
map6 = pygame.image.load('map6.png')
map7 = pygame.image.load('map7.png')
map8 = pygame.image.load('map8.png')
map9 = pygame.image.load('map9.png')
x = 0
orange = (255, 153, 51)
segoePrint = pygame.font.SysFont('Segoe Print', 24)
mapNumber = segoePrint.render(str(x+1), True, orange)
while True:
classQ = input("What class? ")
maps = [map1s, map2, map3, map4, map5, map6, map7, map8, map9]
robots = []
spawner = 0
while True:
randX = random.uniform(0, 800)
randY = random.uniform(0, 600)
robs = {'rect': pygame.Rect(randX, randY, 32, 60), 'surface': robot.robotSprite2}
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_UP:
moveY = -3
elif event.key == K_DOWN:
moveY = +3
elif event.key == K_LEFT:
moveX = -3
elif event.key == K_RIGHT:
moveX = +3
if event.type == KEYUP:
if event.key == K_UP:
moveY = 0
elif event.key == K_DOWN:
moveY = 0
elif event.key == K_LEFT:
moveX = 0
elif event.key == K_RIGHT:
moveX = 0
if event.type == USEREVENT+1:
spawner += 1
if spawner == 2:
spawner = 0
robs = {'rect': pygame.Rect(randX, randY, 32, 60), 'surface': robot.robotSprite2}
robots.append(robs)
#Animate Character
characterX += moveX
characterY += moveY
robot.attack(characterX, characterY, randX, randY)
#Character bordering
if characterX < 0 and ((x == 0) or (x == 3) or (x == 6)):
characterX = 0
if characterX > 800 and ((x == 2) or (x == 8) or (x == 5)):
characterX = 740
if characterY < 0 and ((x == 0) or (x == 2) or (x == 2)):
characterY = 0
if characterY > 600 and ((x == 6) or (x == 7) or (x == 8)):
characterY = 540
#Changing Maps
if characterX < 0 and ((x == 1) or (x == 2) or (x == 4) or (x == 5) or (x == 7) or (x == 8)):
x -= 1
characterX = 790
if classQ == "knight":
screen.blit(knight.defaultCharacter2, (characterX, characterY))
if classQ == "mage":
screen.blit(mage.mageSprite2, (characterX, characterY))
if classQ == "ranger":
screen.blit(ranger.rangerSprite2, (characterX, characterY))
pygame.display.update()
if characterX > 800 and ((x == 0) or (x == 1) or (x == 3) or (x == 4) or (x == 6) or (x == 7)):
x += 1
characterX = 10
if classQ == "knight":
screen.blit(knight.defaultCharacter2, (characterX, characterY))
if classQ == "mage":
screen.blit(mage.mageSprite2, (characterX, characterY))
if classQ == "ranger":
screen.blit(ranger.rangerSprite2, (characterX, characterY))
pygame.display.update()
if characterY < 0 and ((x == 3) or (x == 4) or (x == 5) or (x == 6) or (x == 7) or (x == 8)):
x -= 3
characterY = 590
if classQ == "knight":
screen.blit(knight.defaultCharacter2, (characterX, characterY))
if classQ == "mage":
screen.blit(mage.mageSprite2, (characterX, characterY))
if classQ == "ranger":
screen.blit(ranger.rangerSprite2, (characterX, characterY))
pygame.display.update()
if characterY > 600 and ((x == 0) or (x == 1) or (x == 2) or (x == 3) or (x == 4) or (x == 5)):
x += 3
characterY = 10
if classQ == "knight":
screen.blit(knight.defaultCharacter2, (characterX, characterY))
if classQ == "mage":
screen.blit(mage.mageSprite2, (characterX, characterY))
if classQ == "ranger":
screen.blit(ranger.rangerSprite2, (characterX, characterY))
pygame.display.update()
screen.blit(maps[x], (0,0))
#Draw class sprite to screen
if classQ == "knight":
screen.blit(knight.defaultCharacter2, (characterX, characterY))
if classQ == "mage":
screen.blit(mage.mageSprite2, (characterX, characterY))
if classQ == "ranger":
screen.blit(ranger.rangerSprite2, (characterX, characterY))
for r in robots:
screen.blit(r['surface'], r['rect'])
mapNumber = segoePrint.render(str(x+1), True, orange)
screen.blit(mapNumber, (750, 0))
pygame.display.update()
screen.fill((159,182,205))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment