def main(): enemyYaml = open('./testEnemies.yaml').read() towerYaml = open('./testTowers.yaml').read() gameState1 = GameState(5) enemiesDict = YAMLInstancer.get_multiple(enemyYaml, Enemy) towersDict = YAMLInstancer.get_multiple(towerYaml, Tower) for enemyStr in enemiesDict: gameState1.enemyAdd(enemiesDict[enemyStr]) for towerStr in towersDict: gameState1.towerAdd(towersDict[towerStr]) pygame.init() displaySurf = pygame.display.set_mode((50 * len(gameState1.gameEnv.board), 50 * len(gameState1.gameEnv.board[0]))) while True: for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYUP and event.key == K_ESCAPE): pygame.quit() sys.exit() displaySurf.blit(gameState1.bgSurf, (0, 0)) for entSurf in gameState1.getEntitiesSurface(): displaySurf.blit(entSurf, (0, 0)) pygame.display.update()
def main(): global DISPLAYSURF clock = pygame.time.Clock() for tower1 in tows: tester.board[tower1.xpos][tower1.ypos].hasTower = True for enemyStart in baddies: tester.board[enemyStart.xpos][enemyStart.ypos].hasEnemy = True while True: for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYUP and event.key == K_ESCAPE): pygame.quit() sys.exit() for tower1 in tows: towerChecks(tower1) if len(baddies) == 0: test_yaml = open('./EnemyTest.yaml').read() baddiesStr = YAMLInstancer.get_multiple(test_yaml, Enemy) for enemyStr in baddiesStr: baddies.append(baddiesStr[enemyStr]) for x in range(0, len(tester.board)): for y in range(0, len(tester.board[0])): temp = pygame.Surface((50, 50)) if tester.board[x][y].getPath() == True: temp.fill(LIGHTBROWN) if tester.board[x][y].getPath() != True and tester.board[x][y].hasEnd != True: temp.fill(BROWN) if tester.board[x][y].hasEnd == True: temp.fill(BLACK) if tester.board[x][y].hasEnemy == True: temp.blit(EnemyImage, (0,0)) if tester.board[x][y].hasTower == True: temp.blit(TowerImage, (0,0)) DISPLAYSURF.blit(temp, (x * 50, y * 50)) for badGuy in baddies: enemyMove(badGuy) if badGuy.health <= 0: baddies.remove(badGuy) print(badGuy) tester.board[badGuy.xpos][badGuy.ypos].hasEnemy = False for proj1 in projs: proj1.xpos, proj1.ypos = int(proj1.realX / 50), int(proj1.realY / 50) target1 = proj1.enemy ok = False for alive in baddies: ok = ok or alive == target1 if not ok: projs.remove(proj1) print(proj1) elif proj1.xpos == proj1.enemy.xpos and proj1.ypos == proj1.enemy.ypos: proj1.impact() proj1.damage = 0 proj1.hittimer += 1 if proj1.hittimer >= 9: projs.remove(proj1) print(proj1) else: projMove(proj1) pygame.display.update()
from game.common.yaml_parsing import YAMLInstancer from game.subsystems.ui.graphical_user_interface import GUI from game.subsystems.ui.layout.layout import Layout from game.subsystems.ui.layout.layoutmanager import LayoutManager from game.subsystems.ui.layout.panel import Panel from game.common.text import Text import pygame, sys from game.subsystems.ui.ui_handler import ElementsHandler pygame.init() Text.DEFAULT_TEXT = Text("../common/verdana.ttf") WIDTH, HEIGHT = 400, 400 DISPLAY = pygame.display.set_mode((WIDTH, HEIGHT)) yaml_layout = open("big_layout_test.yaml").read() # start menu layout panel_layouts = YAMLInstancer.get_multiple(yaml_layout, Panel, debug=False) layout_manager = LayoutManager() for panel_name, panel_layout in panel_layouts.items(): layout = Layout.layoutFromPanel(panel_layout) layout_manager.addLayout(layout, panel_name, set_current=True) screen_panels = layout.getPanelsOnRect((0, 0, WIDTH, HEIGHT)) elements_handler = ElementsHandler.from_panel_list(screen_panels) print('all elements: %s'%elements_handler.get_elements()) gui = GUI(elements_handler, layout_manager) # update / handle exiting mouse_position = Vector(0, 0) mouse_down = False mouse_pressed = False while True:
# this is a more detailed testing of yaml, hopefully with nested classes as anonymous instances from game.common.yaml_parsing import YAMLInstancer def print_all_attributes(obj): return 'instance of %s: {\n%s\n}' % (obj.__ if hasattr( obj, '__') else obj.__class__, '\n'.join( ["%s: %s" % (k, v) for k, v in vars(obj).items() if k != "__"])) # open and read test yaml file test_yaml = open('./test_2.yaml').read() # get the first (or only) object from the yaml file o = YAMLInstancer.get_single(test_yaml) print(print_all_attributes(o)) print('--------------------------------') # get multiple objects from yaml file, as a dict like {object1name: value1, object2name: value2, . . . } o = YAMLInstancer.get_multiple(test_yaml) for k, v in o.items(): print(print_all_attributes(v))
from game.subsystems.ui.layout.layout import Layout from game.subsystems.ui.layout.layoutmanager import LayoutManager from game.subsystems.ui.layout.panel import Panel from game.common.text import Text from game.subsystems.gameState import * import pygame, sys from game.subsystems.ui.ui_handler import ElementsHandler pygame.init() Text.DEFAULT_TEXT = Text("../common/verdana.ttf") WIDTH, HEIGHT = 800, 600 DISPLAY = pygame.display.set_mode((WIDTH, HEIGHT)) # SETUP ENTITIES enemies = list( YAMLInstancer.get_multiple(open('EnemyTest.yaml').read(), Enemy).values()) yaml_layout = open("Shoptest.yaml").read() # start menu layout panel_layouts = YAMLInstancer.get_multiple( yaml_layout, Panel, debug=False) # get a dictionary with all the layouts layout_manager = LayoutManager() for panel_name, panel_layout in panel_layouts.items(): layout = Layout.layoutFromPanel(panel_layout) layout_manager.addLayout(layout, panel_name, set_current=True) layout = layout_manager.getLayout() screen_panels = layout.getPanelsOnRect((0, 0, WIDTH, HEIGHT)) elements_handler = ElementsHandler.from_panel_list(screen_panels) print('all elements: %s' % elements_handler.get_elements()) gui = GUI(elements_handler, layout_manager) daGame = GameState("TestMap2.txt")
from game.subsystems.entities import * from pygame.locals import * pygame.init() tester = Environment() DISPLAYSURF = pygame.display.set_mode((50 * len(tester.board), 50 * len(tester.board[0]))) temp = pygame.image.load('Tower.png') TowerImage = pygame.transform.scale(temp, (50,50)) temp2 = pygame.image.load('Enemy.png') EnemyImage = pygame.transform.scale(temp2, (50,50)) BROWN = (150, 75, 0) LIGHTBROWN = (181, 101, 29) BLACK = (0,0,0) RED = (255,0,0) GREEN = (0,255,00) test_yaml = open('./EnemyTest.yaml').read() baddiesStr = YAMLInstancer.get_multiple(test_yaml, Enemy) towertest_yaml = open('./basictower.yaml').read() tower1 = YAMLInstancer.get_multiple(towertest_yaml, Tower) baddies = [] tows = [] projs = [] for enemyStr in baddiesStr: baddies.append(baddiesStr[enemyStr]) for towerStr in tower1: tows.append(tower1[towerStr]) def main(): global DISPLAYSURF clock = pygame.time.Clock() for tower1 in tows: tester.board[tower1.xpos][tower1.ypos].hasTower = True
import pygame, sys from game.subsystems.ui.ui_handler import ElementsHandler pygame.init() Text.DEFAULT_TEXT = Text("../common/verdana.ttf") WIDTH, HEIGHT = 800, 600 DISPLAY = pygame.display.set_mode((WIDTH, HEIGHT)) # config CONFIG_DIR = "../../config/" GET_CONFIG = lambda filename: open(CONFIG_DIR + filename, 'r') GET_YAML = lambda filename: GET_CONFIG(filename + '.yaml').read() # SETUP ENTITIES enemies = list( YAMLInstancer.get_multiple(GET_YAML('entities/enemies'), Enemy).values()) # make the layout manager layout_manager = LayoutManager() # get the layouts panel_layouts = YAMLInstancer.get_multiple( GET_YAML('layouts'), Panel, debug=False) # get a dictionary with all the layouts for pn, p in panel_layouts.items(): p: Panel = p # tell it that p is a panel #print('panels: %s'%p.get_all_inner()) layout = Layout.layoutFromPanel(p) # get the layout #print('layout gotten: %s, its panels: %s'%(layout, layout.panels)) screen_panels = layout.getPanelsOnRect( (0, 0, WIDTH, HEIGHT)) # transform panels so that they're on the screen size