Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > unit selection problem

Reply
Thread Tools

unit selection problem

 
 
Paul Pittlerson
Guest
Posts: n/a
 
      01-14-2013
Unit selection doesn't work properly. Pygames event.pos returns a tuple of the coords within the current window, so it's not possible to select units outside of the top left corner.

from pygamehelper import *
from pygame import *
from pygame.locals import *
from vec2d import *
from math import e, pi, cos, sin, sqrt
from random import uniform
from mapeditor import *
from entity import *
from spritesheet import *

# version alpha 0.1
# map drawing seems functional, albeit crude

class Starter(PygameHelper):
def __init__(self):
self.w, self.h = 1600, 900
PygameHelper.__init__(self, size=(self.w, self.h), fill=((255,255,255)))
self.map_layout = map_constructor("map.png", 2400)
self.object_counter = len(self.map_layout.all_map_objects)
map_textures = get_sprites( (48, 4 ,"spritesheet.png" , (0, 0) )
self.collision_map = []

# defines all map objects in readable format
self.map_sprite_list = {
'floor_red' : map_textures.sprites[0],
'floor_dark' : map_textures.sprites[2],
'wall' : map_textures.sprites[1],
'proto_unit' : map_textures.sprites[3],
}
# map scrolling modifiers
self.mod_w = 0
self.mod_h = 0

# introduce agents
self.agent_list = []
self.selected = []

# TODO: make surface size relative to map size
self.mapSurf = pygame.Surface( (3600, 3600) )

# draw the floor once

for e in self.map_layout.fixed_list:
if e.type == 1:
self.mapSurf.blit(self.map_sprite_list['floor_red'], e.rect)

self.mapSurfRect = self.mapSurf.get_rect()

# create a collision map based on wall positions
for e in self.map_layout.all_map_objects:
if e.type == 2:
wall_object = wall()
wall_object.pos = vec2d((e.x_position + 24), (e.y_position + 30))
wall_object.target = wall_object.pos
self.collision_map.append(wall_object)

for e in self.map_layout.all_map_objects: # check map for agents
if e.type == 3:
a = agent()
a.pos = vec2d(e.x_position, e.y_position)
print a.pos
a.target = a.pos
self.agent_list.append(a)

def update(self):
# map scrolling
self.mapSurfRect.center = (((self.w / 2) + self.mod_w), (((self.h / 2)) + self.mod_h))

# update agent position
for a in self.agent_list:
dir = a.target - a.pos
if dir.length >= 3:
dir.length = 3
a.pos = a.pos + dir

# update the walls, so they are drawn above the floor
for e in self.map_layout.fixed_list:
if e.type == 2:
self.mapSurf.blit(self.map_sprite_list['wall'], e.rect)

# add agents to the mapSurf
for a in self.agent_list:
self.mapSurf.blit(self.map_sprite_list['proto_unit'], a.pos)


def keyUp(self, key):
pass

def keyDown(self, key):

# move the mapSurf object
# TODO: implement continuous camera movement while key is pressed
if key == K_RIGHT:
self.mod_w -= 100
if key == K_LEFT:
self.mod_w += 100
if key == K_UP:
self.mod_h += 100
if key == K_DOWN:
self.mod_h -= 100


def mouseUp(self, button, pos):

# select agent
if button==1:
print pos
for a in self.agent_list:
if a.pos.get_distance(vec2d(pos)) < 24:
self.selected.append(a)
print 'selected'

# right click to move selected agents
if button==3:
for a in self.selected:
a.target = vec2d(pos)


def mouseMotion(self, buttons, pos, rel):
pass

def draw(self):
#self.screen.fill((255,255,255))
self.screen.fill((0,0,0))

self.screen.blit(self.mapSurf, self.mapSurfRect)

#for a in self.selected:
# pygame.draw.circle(self.mapSurf, (50,200,50), a.pos.inttup(), 18, 1) # represent selected units

s = Starter()
s.mainLoop(100)
 
Reply With Quote
 
 
 
 
Ulrich Eckhardt
Guest
Posts: n/a
 
      01-15-2013
Am 14.01.2013 21:29, schrieb Paul Pittlerson:
> map_textures = get_sprites( (48, 4 ,"spritesheet.png" , (0, 0) )


You forgot to include spritesheet.png in your message. Seriously,
condense your code down to a minimal example. This might help you
finding the problem yourself, otherwise post the complete compilable
example here.

Uli

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
selection structure nested within another selection structure 4Ankit@gmail.com Javascript 1 12-07-2006 11:47 AM
JTable with row selection, but no cell selection Simon Niederberger Java 2 01-07-2005 04:17 PM
JS comparing innerHTML to text selection (window.getSelection() /document.selection) Andrew Crowe HTML 1 09-13-2004 02:22 PM
How to change a range selection to text selection? Loebb Javascript 0 02-23-2004 02:12 PM
HOWTO autopost the selection list upon selection curiousity ASP .Net Mobile 0 11-21-2003 12:57 AM



Advertisments