targets and warp statioin now in screen and partly solved #3

small-fixes-for-0.3.3
Max Lange 8 years ago
parent 7836c3673b
commit 9c2fa59bea

@ -210,7 +210,7 @@ def status():
borderpos = border.get_rect()
borderpos.bottomright = (settings.screenx_current,
settings.screeny_current)
pos = bar.fill((62, 186, 23))
pos = bar.fill((62, 186, 23, 10))
pos.right = settings.screenx_current
pos.top = settings.screeny_current - (pos.h / 100.0) * specials.energy
settings.screen.blit(bar, pos)

@ -3,6 +3,7 @@ import pygame
import random
import math
from . import settings
from . import menu
from pygame.locals import *
"""Classes for creating objects"""
@ -68,59 +69,6 @@ class stars():
self.pointy = self.relative_y * self.screeny
class inputfield():
def __init__(self, x, y, typ, text, color):
print "used"
"""Creates a new inputfield"""
self.font = pygame.font.SysFont(settings.typeface, 30)
self.header = text
if typ == 1:
self.field = settings.field
elif typ == 2:
self.field = settings.field1
self.pos = settings.field.get_rect()
self.pos = self.pos.move(x - (self.pos.w / 2.0), y - (self.pos.h / 2.0))
self.text = ""
self.render_text = settings.modrender(settings.typeface, 30, self.text,
True, color,
self.pos.size, 9)
self.textpos = self.render_text.get_rect()
self.textpos.center = self.pos.center
self.render_header = settings.modrender(settings.typeface, 30, self.header,
True, color,
settings.screen.get_rect().size, 0)
self.headerpos = self.render_header.get_rect()
self.headerpos.center = self.pos.center
self.headerpos.y -= 50
def gettext(self):
"""Returns text if return is pressed or removes one if return is pressed"""
from . import interface
key = interface.getall(False)
if key is not None and self.textpos.width < self.pos.width - 18:
self.text = self.text + key
if key is None:
key = interface.getall(True)
if key == "return":
return self.text
if key == "backspace":
self.text = self.text[:len(self.text) - 1]
def blit(self):
"""Blits the inputfield"""
color = settings.color
screen = settings.screen
self.render_text = settings.modrender(settings.typeface, 30, self.text,
True, color,
self.pos.size, 9)
self.textpos = self.render_text.get_rect()
self.textpos.center = self.pos.center
screen.blit(self.render_header, self.headerpos)
screen.blit(self.field, self.pos)
screen.blit(self.render_text, self.textpos)
class bullet():
def __init__(self, angle, reference):
@ -194,13 +142,8 @@ class target():
def update(self):
"""Adjusts position according to screen size"""
self.pos_x = self.pos_xper * float(settings.world.background_pos.w
- 20 - self.pos.w) + 10 + self.pos.w / 2.0
self.pos_y = self.pos_yper * float(settings.world.background_pos.h
- 20 - self.pos.h) + 10 + self.pos.h / 2.0
self.pos_x = self.pos_xper * float(settings.world.background_pos.w
- 20 - self.pos.w) + 10 + self.pos.w / 2.0
self.pos_y = self.pos_yper * ((settings.screeny_current - self.pos.h) * 2.0)
self.pos_x = self.pos_xper * 2 * float(settings.screenx_current - self.pos.w)
self.pos_y = self.pos_yper * 2 * float(settings.screeny_current - self.pos.h)
def move(self, x, y):
"""Moves rect according to playerposition"""
@ -246,4 +189,75 @@ class target():
if self.inscreen:
settings.screen.blit(self.image, self.pos)
return True
return False
return False
class warp_station():
def __init__(self):
self.x_pos = random.random()
self.y_pos = random.random()
self.screen = settings.screen
self.update()
def update(self):
self.img = pygame.image.load("./assets/sprites/station1.tif")
self.img = pygame.transform.smoothscale(self.img,
(int(settings.screenx_current * 0.1),
int(settings.screenx_current * 0.1)
))
self.pos = self.img.get_rect()
self.pos.x = self.x_pos * 2 * float(settings.screenx_current - self.pos.w)
self.pos.y = self.y_pos * 2 * float(settings.screeny_current - self.pos.h)
self.anchorx, self.anchory = self.pos.topleft
def move(self, playerpos):
self.pos.left = self.anchorx - playerpos.x
self.pos.top = self.anchory - playerpos.y
def test(self, playerpos):
def testpoint(point):
x_sqr = ((point[0] * point[0])
- (2.0 * self.pos.centerx * point[0])
+ (self.pos.centerx * self.pos.centerx))
y_sqr = ((point[1] * point[1])
- (2.0 * self.pos.centery * point[1])
+ (self.pos.centery * self.pos.centery))
if math.sqrt(x_sqr + y_sqr) < self.pos.w / 2.0:
return True
else:
return False
def test_collide():
test = testpoint(playerpos.topleft)
test = test or testpoint(playerpos.bottomleft)
test = test or testpoint(playerpos.topright)
test = test or testpoint(playerpos.bottomright)
return test
if test_collide():
#Warps to the selected world and gets a bit pushed off the station
selected_num = menu.choose_world()
if selected_num >= 0:
settings.world = settings.localmap[selected_num]
settings.world.adjust_to_screen()
settings.player.up = False
settings.player.down = False
settings.player.left = False
settings.player.right = False
settings.up = False
settings.down = False
settings.left = False
settings.right = False
while test_collide():
if settings.player.pos.center[0] < self.pos.center[0]:
settings.player.move_ip(-20, 0)
else:
settings.player.move_ip(20, 0)
if settings.player.pos.center[1] < self.pos.center[1]:
settings.player.move_ip(0, -20)
else:
settings.player.move_ip(0, 20)
playerpos = settings.player.pos
def blit(self):
self.screen.blit(self.img, self.pos)

@ -1,10 +1,7 @@
from . import settings
from . import objects
from . import draw
from . import menu
import pygame
import random
import math
"""An abstact level for handeling multiple worlds."""
@ -36,77 +33,7 @@ class world():
tmptarget = objects.target()
self.targets.append(tmptarget)
class warp():
def __init__(self):
self.x_pos = random.random()
self.y_pos = random.random()
self.screen = settings.screen
self.update()
def update(self):
self.img = pygame.image.load("./assets/sprites/station1.tif")
self.img = pygame.transform.smoothscale(self.img,
(int(settings.screenx_current * 0.1),
int(settings.screenx_current * 0.1)
))
self.pos = self.img.get_rect()
self.pos.x = self.x_pos * (settings.world.background_pos.w - self.pos.w)
self.pos.y = self.y_pos * (settings.world.background_pos.h - self.pos.h)
self.anchorx, self.anchory = self.pos.topleft
def move(self, playerpos):
self.pos.left = self.anchorx - playerpos.x
self.pos.top = self.anchory - playerpos.y
def test(self, playerpos):
def testpoint(point):
x_sqr = ((point[0] * point[0])
- (2.0 * self.pos.centerx * point[0])
+ (self.pos.centerx * self.pos.centerx))
y_sqr = ((point[1] * point[1])
- (2.0 * self.pos.centery * point[1])
+ (self.pos.centery * self.pos.centery))
if math.sqrt(x_sqr + y_sqr) < self.pos.w / 2.0:
return True
else:
return False
def test_collide():
test = testpoint(playerpos.topleft)
test = test or testpoint(playerpos.bottomleft)
test = test or testpoint(playerpos.topright)
test = test or testpoint(playerpos.bottomright)
return test
if test_collide():
#Warps to the selected world and gets a bit pushed off the station
selected_num = menu.choose_world()
if selected_num >= 0:
settings.world = settings.localmap[selected_num]
settings.world.adjust_to_screen()
settings.player.up = False
settings.player.down = False
settings.player.left = False
settings.player.right = False
settings.up = False
settings.down = False
settings.left = False
settings.right = False
while test_collide():
if settings.player.pos.center[0] < self.pos.center[0]:
settings.player.move_ip(-20, 0)
else:
settings.player.move_ip(20, 0)
if settings.player.pos.center[1] < self.pos.center[1]:
settings.player.move_ip(0, -20)
else:
settings.player.move_ip(0, 20)
playerpos = settings.player.pos
def blit(self):
self.screen.blit(self.img, self.pos)
self.warp1 = warp()
self.warp1 = objects.warp_station()
self.adjust_to_screen()

Loading…
Cancel
Save