Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Aguiar <alanjas@hotmail.com>2012-05-27 02:03:17 (GMT)
committer Alan Aguiar <alanjas@hotmail.com>2012-05-27 02:03:17 (GMT)
commitccf0e533ca952b28c0a54f93ccee4c05b20f00e5 (patch)
treef28c0527b0d5498de5e798fccffc83184575617f
parente98f25ff0ec41f08c00074b2ecc4a8bf32fb6891 (diff)
some changes, resize game
-rwxr-xr-xactivity.py2
-rwxr-xr-xsprayconstants.py37
-rwxr-xr-xsprayplay.py108
3 files changed, 88 insertions, 59 deletions
diff --git a/activity.py b/activity.py
index d0b34fe..be4167a 100755
--- a/activity.py
+++ b/activity.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
import gtk
import sugargame.canvas
diff --git a/sprayconstants.py b/sprayconstants.py
deleted file mode 100755
index fe723c0..0000000
--- a/sprayconstants.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from math import *
-
-
-# Gameplay constants
-PUCKS_TO_WIN = 5
-
-# Screen constants
-SCREEN_WIDTH = 1200
-SCREEN_HEIGHT = 825
-
-# Bullet constants
-BULLET_RADIUS = 10.0
-BULLET_SPEED = 4
-BULLET_MASS = 0.2
-AMMO_PER_PLAYER = 30
-
-# Player rotation constants
-PLAYER_ARM_LENGTH = 20.0
-MAX_ROTATION = 80
-ROTATION_SPEED = 10
-ROTATION_DECAY = .4
-
-# Reload constants
-RELOAD_DELAY = 10
-RELOAD_RANDOM = .4 #between 0 and 1, fractional randomization in reload delays
-
-# Playing field constants
-CIRCLE_BORDER = SCREEN_HEIGHT / 20
-CIRCLE_RADIUS = int((SCREEN_HEIGHT-2*CIRCLE_BORDER)/2)
-CIRCLE_LEFT = [CIRCLE_BORDER + CIRCLE_RADIUS, CIRCLE_BORDER + CIRCLE_RADIUS]
-CIRCLE_RIGHT = [SCREEN_WIDTH - CIRCLE_BORDER - CIRCLE_RADIUS, CIRCLE_BORDER + CIRCLE_RADIUS]
-GRAVITY_DIST = CIRCLE_BORDER + 175
-GRAVITY_FORCE = .015
-WALL_DAMPING = .6
-WALL_FRICTION = .07
-COLLECTION_WIDTH = 100
-MAX_COLLECTION_VELOCITY = 100 \ No newline at end of file
diff --git a/sprayplay.py b/sprayplay.py
index e4ea7f1..705c822 100755
--- a/sprayplay.py
+++ b/sprayplay.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python
from __future__ import division
@@ -7,7 +8,45 @@ import pygame
import random
from math import *
from pygame import *
-from sprayconstants import *
+#from sprayconstants import *
+
+
+# To win
+PUCKS_TO_WIN = 5
+
+# Bullet constants
+BULLET_RADIUS = 10.0
+BULLET_SPEED = 4
+BULLET_MASS = 0.2
+AMMO_PER_PLAYER = 20
+
+# Player rotation constants
+PLAYER_ARM_LENGTH = 20.0
+MAX_ROTATION = 80
+ROTATION_SPEED = 10
+ROTATION_DECAY = .4
+
+# Reload constants
+RELOAD_DELAY = 10
+RELOAD_RANDOM = .4
+
+# Playing field constants
+GRAVITY_FORCE = .015
+WALL_DAMPING = .6
+WALL_FRICTION = .07
+COLLECTION_WIDTH = 100
+MAX_COLLECTION_VELOCITY = 100
+
+# No strict constants
+SCREEN_WIDTH = 0
+SCREEN_HEIGHT = 0
+CIRCLE_BORDER = 0
+CIRCLE_RADIUS = 0
+CIRCLE_LEFT = 0
+CIRCLE_RIGHT = 0
+GRAVITY_DIST = 0
+SCALE = 1
+
def data_path(f):
return os.path.abspath(os.path.join('./data/', f))
@@ -138,9 +177,11 @@ class Background(pygame.sprite.Sprite):
group = pygame.sprite.Group()
- def __init__(self):
+ def __init__(self, w, h):
super(Background, self).__init__(Background.group)
- self.image = pygame.image.load(data_path('bg.png')).convert()
+ self.image_tmp = pygame.image.load(data_path('bg.png')).convert()
+ self.image = pygame.transform.scale(self.image_tmp, (w, h))
+ self.image_tmp = None
self.rect = self.image.get_rect()
class Intro(pygame.sprite.Sprite):
@@ -469,12 +510,18 @@ class Player(pygame.sprite.Sprite):
star = 0
group = pygame.sprite.Group()
- player_filenames = ['player0.png','player1.png']
def __init__(self,pos,rot,player_num=1):
super(Player,self).__init__(Player.group)
- self.orig_image = pygame.image.load(data_path(Player.player_filenames[player_num])).convert_alpha()
+
+ player_filenames = ['player0.png','player1.png']
+ self.orig_image = pygame.image.load(data_path(player_filenames[player_num])).convert_alpha()
+ if not(SCALE == 1):
+ w, h = self.orig_image.get_size()
+ w = int(w / SCALE)
+ h = int(h / SCALE)
+ self.orig_image = pygame.transform.scale(self.orig_image, (w, h))
player_color = [255,0,0]
@@ -686,12 +733,28 @@ class SprayPlay():
pass
def run(self):
+ global SCREEN_WIDTH, SCREEN_HEIGHT, CIRCLE_BORDER, CIRCLE_RADIUS, CIRCLE_LEFT, CIRCLE_RIGHT, GRAVITY_DIST, SCALE
# Initialization
pygame.init()
screen = pygame.display.get_surface()
SCREEN_WIDTH = screen.get_width()
SCREEN_HEIGHT = screen.get_height()
- background = Background()
+ background = Background(SCREEN_WIDTH, SCREEN_HEIGHT)
+
+ # Playing field constants
+ CIRCLE_BORDER = SCREEN_HEIGHT / 20
+ CIRCLE_RADIUS = int((SCREEN_HEIGHT-2*CIRCLE_BORDER)/2)
+ CIRCLE_LEFT = [CIRCLE_BORDER + CIRCLE_RADIUS, CIRCLE_BORDER + CIRCLE_RADIUS]
+ CIRCLE_RIGHT = [SCREEN_WIDTH - CIRCLE_BORDER - CIRCLE_RADIUS, CIRCLE_BORDER + CIRCLE_RADIUS]
+
+ if SCREEN_WIDTH == 1200:
+ SCALE = 1
+ GRAVITY_DIST = CIRCLE_BORDER + 175
+ CONST = 80
+ else:
+ SCALE = 1200.0 / SCREEN_WIDTH
+ GRAVITY_DIST = CIRCLE_BORDER + int(SCREEN_WIDTH * 175.0 / 1200.0)
+ CONST = int(SCREEN_WIDTH * 80.0 / 1200.0)
# Initial game state.
overlay = Overlay()
@@ -709,8 +772,8 @@ class SprayPlay():
# Players.
global players
- a = Player((CIRCLE_BORDER + 80,SCREEN_HEIGHT//2),90,0)
- b = Player((SCREEN_WIDTH-CIRCLE_BORDER - 80,SCREEN_HEIGHT//2),-90,1)
+ a = Player((CIRCLE_BORDER + CONST,SCREEN_HEIGHT//2),90,0)
+ b = Player((SCREEN_WIDTH-CIRCLE_BORDER - CONST,SCREEN_HEIGHT//2),-90,1)
players = [a,b]
# Puck defs
@@ -719,7 +782,7 @@ class SprayPlay():
newRound()
try:
while True:
- delta = clock.tick(25)
+ delta = clock.tick(20)
#delta = 1.0 / 25.0
#GTK events
@@ -736,43 +799,44 @@ class SprayPlay():
if evt.key == pygame.K_F5:
newGame()
if evt.key == pygame.K_ESCAPE:
- raise StopGame
- if evt.key == pygame.K_RIGHT:
+ #raise StopGame
+ newGame()
+ if (evt.key == pygame.K_RIGHT) or (evt.key == pygame.K_KP9):
b.turnRight = 1
b.isHuman = 1
- if evt.key == pygame.K_LEFT:
+ if (evt.key == pygame.K_LEFT) or (evt.key == pygame.K_KP3):
b.turnLeft = 1
b.isHuman = 1
- if evt.key == pygame.K_RETURN:
+ if (evt.key == pygame.K_RETURN) or (evt.key == pygame.K_KP7):
b.shootButton = 1
b.isHuman = 1
overlay.kill()
- if evt.key == pygame.K_d:
+ if (evt.key == pygame.K_d) or (evt.key == pygame.K_KP2):
a.turnRight = 1
a.isHuman = 1
- if evt.key == pygame.K_a:
+ if (evt.key == pygame.K_a) or (evt.key == pygame.K_KP8):
a.turnLeft = 1
a.isHuman = 1
- if evt.key == pygame.K_SPACE:
+ if (evt.key == pygame.K_SPACE) or (evt.key == pygame.K_KP6):
a.shootButton = 1
a.isHuman = 1
elif evt.type == pygame.KEYUP:
- if evt.key == pygame.K_RIGHT:
+ if (evt.key == pygame.K_RIGHT) or (evt.key == pygame.K_KP9):
b.turnRight = 0
b.isHuman = 1
- if evt.key == pygame.K_LEFT:
+ if (evt.key == pygame.K_LEFT) or (evt.key == pygame.K_KP3):
b.turnLeft = 0
b.isHuman = 1
- if evt.key == pygame.K_RETURN:
+ if (evt.key == pygame.K_RETURN) or (evt.key == pygame.K_KP7):
b.shootButton = 0
b.isHuman = 1
- if evt.key == pygame.K_d:
+ if (evt.key == pygame.K_d) or (evt.key == pygame.K_KP2):
a.turnRight = 0
a.isHuman = 1
- if evt.key == pygame.K_a:
+ if (evt.key == pygame.K_a) or (evt.key == pygame.K_KP8):
a.turnLeft = 0
a.isHuman = 1
- if evt.key == pygame.K_SPACE:
+ if (evt.key == pygame.K_SPACE) or (evt.key == pygame.K_KP6):
a.shootButton = 0
a.isHuman = 1
elif evt.type == pygame.VIDEORESIZE: