Пример #1
0
def buildHTMLMap(seed, width, height):
	tstart = datetime.now()
	m = MapGenerator(int(width), int(height), str(seed))
	#m.makeRandom().smooth().smooth().smooth().removeIslands().findSpawns()
	m.makeRandom().smooth().smooth().smooth().findSpawns().removeIslands_n()
	
	tdelta = datetime.now()-tstart
	
	html = """
		<html>
		<head>
		<title>pymap</title>
		<style>
		table, tr, td, img{
		border:none;
		padding:0px;
		margin:-1px;
		}
		body{
			background-image:URL("/img/wool_colored_black.png");
		}
		h3, h4, h5{
		color:white;
		}
		</style>
		</head>
		<body>"""
	
	html += "<h3>Seed: <a href='/50x50/"+str(seed)+"'>"+str(seed)+"</a></h3>"
	html += "<h4>Generated in: "+str(tdelta)+"</h4>"
	
	html += """
		<center>
		<table>"""
	
	table = {
		'play': 'sand.png',
		'spawn': 'dropper_front_horizontal.png',
		'searched': 'planks_birch.png',
		'wall': 'stonebrick_mossy.png',
		'empty': 'wool_colored_black.png'}
	
	for y in Tessellation(m, table).mapValues():
		html += "<tr>"
		for x in y:
			html += "<td><img src='/img/"+x+"' /></td>"
		html += "</tr>"
	
	
	html += """
	</table>
	<h5>&copy 2013 - Neil Vallon</h5>
	</center>
	</body>
	</html>
	"""
	
	return html
Пример #2
0
def index(seed=300):
	import matplotlib.pyplot as plt
	import os, cStringIO
	
	response.content_type = "image/png"
	m = MapGenerator(100, 100, seed)
	m.makeRandom().smooth().smooth().smooth().findSpawns().removeIslands_n()
	
	
	table = {
		'play': [1, 1, 1],
		'spawn': [0, 0, 1],
		'searched': [0.5, 1, 0.5],
		'wall': [1, 0, 0],
		'empty': [0, 0, 0]}
	
	fig = plt.imshow(Tessellation(m, table).mapValues(), interpolation='nearest')
	
	#plt.set_axis_off()
	plt.axis('off')
	
	output = cStringIO.StringIO()
	plt.savefig(output, format="png", facecolor='black', dpi=300)
	return output.getvalue()
Пример #3
0
         else:
             (pos_x, pos_y) = (fov_px, fov_py)
         print "cur: ", (fov_px, fov_py)
         current_map.update_fov(fov_px, fov_py)
         current_map.draw_map()
         libtcod.console_put_char(main_console, fov_px, fov_py, '@',
                                  libtcod.BKGND_NONE)
         libtcod.console_blit(main_console,
                              0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
                              0, SCREEN_X, SCREEN_Y)
         libtcod.console_flush()
 elif hasUpdate:
     libtcod.console_clear(None)
     libtcod.console_clear(main_console)
     libtcod.console_flush()
     gen = MapGenerator.MapGenerator()
     newMap = gen.generateCave(100, 80, main_console)
     libtcod.console_clear(None)
     libtcod.console_clear(main_console)
     libtcod.console_flush()
     while True:
         rx = randrange(20, 60)
         ry = randrange(30, 50)
         if (newMap[ry][rx] == ' '):
             break
     (fov_px, fov_py) = (rx, ry)
     while True:
         rx = randrange(20, 60)
         ry = randrange(30, 50)
         if (newMap[ry][rx] == ' '):
             break
Пример #4
0
import pyglet
import pickle

import GalaxyView
import ThreadedServer
import messages
import Util
import UserInterface

# Map Stuff
import MapGenerator
import Map

# Generate or load a map
map_size = 32
mapLoader = MapGenerator.GaussianGenerator(
    map_size, map_size, 16, 24)  # (width, height, spread, number)
playMap = Map.Map(map_size, map_size, mapLoader)
server_currentView = 0


def setCurrentView(view):
    global server_currentView
    server_currentView = view


# TODO: Change fighter image to ship-class derived image
shipImg = pyglet.resource.image("resources/ship_fighter.png")
shipImg.anchor_x = shipImg.width / 2
shipImg.anchor_y = shipImg.height / 2

server_navComponent = UserInterface.UINavElement("Navigation Map", 0, 0, 100,
Пример #5
0
def play_game(game_save={}):
    """
    Starts Dungeon game

    :param game_save: saved game state(if any)
    :return: nothing
    :rtype: None
    """

    main_logger.debug(f'started')
    empty_space = '~'
    explored_space = '.'
    trap = 'x'
    treasure = '$'
    player = '*'

    move_command = 'Move'
    save_command = 'Save'
    end_game_session = 'End'

    user_options = [move_command, save_command, end_game_session]
    user_prompt = '\n'.join(user_options)

    result = ''
    game_over = False

    if game_save == {}:
        game_world = MapGenerator.generate(10,
                                           empty=empty_space,
                                           trap=trap,
                                           treasure=treasure)
        player_coordinates = setup_player_position(game_world, empty_space,
                                                   player)

    else:
        game_world = game_save['map']
        player_coordinates = game_save['player']

    old_player_coordinates = player_coordinates
    hidden = [trap, treasure]

    while not game_over:
        game_world[old_player_coordinates[0]][
            old_player_coordinates[1]] = explored_space
        game_world[player_coordinates[0]][player_coordinates[1]] = player

        old_player_coordinates = player_coordinates.copy()
        View.print_map_hide_secrets(game_world, hidden, empty_space)

        generate_warnings_if_required(game_world, player_coordinates, trap,
                                      treasure)

        main_logger.info(user_prompt)
        choice = input()

        if choice == move_command:
            handle_player_move(game_world, player_coordinates)

        elif choice == save_command:
            objects = {'map': game_world, 'player': player_coordinates}
            DungeonSaver.save_game(objects)

        elif choice == end_game_session:
            result = 'Game over'
            break

        else:
            main_logger.info('Invalid input')

        game_over, result = check_game_over(player_coordinates, game_world,
                                            trap, treasure)

    main_logger.info(result)
    View.print_map(game_world)
    main_logger.debug(f'ended {result}')
Пример #6
0
    def __init__(self, width=800, height=800, fps=60, title="112 Pygame Game"):
        self.width = width
        self.height = height
        self.fps = fps
        self.title = title
        self.rows = 25
        self.cols = 25
        self.displayEnemyAttacks = False

        Tile.yDist = self.height // self.rows
        Tile.xDist = self.width // self.cols

        Unit.yDist = self.height // self.rows
        Unit.xDist = self.width // self.cols

        Mercenary.playerSprite = pygame.transform.scale(
            pygame.image.load("Images//PlayerMerc.png"),
            (Tile.xDist, Tile.yDist))
        Mercenary.enemySprite = pygame.transform.scale(
            pygame.image.load("Images//EnemyMerc.png"),
            (Tile.xDist, Tile.yDist))

        Bandit.playerSprite = pygame.transform.scale(
            pygame.image.load("Images//PlayerBandit.png"),
            (Tile.xDist, Tile.yDist))
        Bandit.enemySprite = pygame.transform.scale(
            pygame.image.load("Images//EnemyBandit.png"),
            (Tile.xDist, Tile.yDist))

        Archer.playerSprite = pygame.transform.scale(
            pygame.image.load("Images//PlayerArcher.png"),
            (Tile.xDist, Tile.yDist))
        Archer.enemySprite = pygame.transform.scale(
            pygame.image.load("Images//EnemyArcher.png"),
            (Tile.xDist, Tile.yDist))

        Soldier.playerSprite = pygame.transform.scale(
            pygame.image.load("Images//PlayerSoldier.png"),
            (Tile.xDist, Tile.yDist))
        Soldier.enemySprite = pygame.transform.scale(
            pygame.image.load("Images//EnemySoldier.png"),
            (Tile.xDist, Tile.yDist))

        #image from http://sites.bxmc.poly.edu/~ryansu/IP/index.php/journey-into-pixel-art/
        Field.tileSprite = pygame.transform.scale(
            pygame.image.load("Images//grassTile.png"),
            (Tile.xDist, Tile.yDist))

        #image from http://sites.bxmc.poly.edu/~ryansu/IP/index.php/journey-into-pixel-art/
        Sand.tileSprite = pygame.transform.scale(
            pygame.image.load("Images//sandTile.png"),
            (Tile.xDist, Tile.yDist))

        #image from http://sites.bxmc.poly.edu/~ryansu/IP/index.php/journey-into-pixel-art/
        Mountain.tileSprite = pygame.transform.scale(
            pygame.image.load("Images//rockTile.png"),
            (Tile.xDist, Tile.yDist))

        #images from https://www.pinterest.com/pin/410531322268651281/ used
        Tree.tileSprite = pygame.transform.scale(
            pygame.image.load("Images//treeTile.png"),
            (Tile.xDist, Tile.yDist))

        #image from https://www.pinterest.com/pin/401313016766184775/
        Fort.tileSprite = pygame.transform.scale(
            pygame.image.load("Images//fortTile.png"),
            (Tile.xDist, Tile.yDist))

        #self.grid = MapGenerator.createBasicMap(self)
        self.grid = MapGenerator.proceduralMap(self)

        tempStats = {
            "HP": 10,
            "Strength": 15,
            "Defense": 10,
            "Speed": 10,
            "Skill": 10,
            "Luck": 10
        }
        archer = Archer("Archer", copy.copy(tempStats),
                        [Bow("Bow", 5, 100, 5, 0), 0, 0, 0, 0], "Player",
                        (0, 0, 255))
        soldier = Soldier("Soldier", copy.copy(tempStats),
                          [Lance("Lance", 5, 100, 5, 0), 0, 0, 0, 0], "Player",
                          (0, 0, 255))
        merc = Mercenary("Merc", copy.copy(tempStats),
                         [Sword("Sword", 5, 100, 5, 0), 0, 0, 0, 0], "Player",
                         (0, 0, 255))
        bandit = Bandit("Bandit", copy.copy(tempStats),
                        [Axe("Axe", 5, 100, 5, 0), 0, 0, 0, 0], "Player",
                        (0, 0, 255))

        self.initUnit(archer)
        self.initUnit(soldier)
        self.initUnit(merc)
        self.initUnit(bandit)

        archer = Archer("Archer", copy.copy(tempStats),
                        [Bow("Bow", 5, 100, 5, 0), 0, 0, 0, 0], "Enemy",
                        (255, 0, 0))
        soldier = Soldier("Soldier", copy.copy(tempStats),
                          [Lance("Lance", 5, 100, 5, 0), 0, 0, 0, 0], "Enemy",
                          (255, 0, 0))
        merc = Mercenary("Merc", copy.copy(tempStats),
                         [Sword("Sword", 5, 100, 5, 0), 0, 0, 0, 0], "Enemy",
                         (255, 0, 0))
        bandit = Bandit("Bandit", copy.copy(tempStats),
                        [Axe("Axe", 5, 100, 5, 0), 0, 0, 0, 0], "Enemy",
                        (255, 0, 0))

        self.initUnit(archer)
        self.initUnit(soldier)
        self.initUnit(merc)
        self.initUnit(bandit)

        self.curRow = 0
        self.curCol = 0
Пример #7
0
def initialize_Map(screen, settings):
    clock = pygame.time.Clock()
    map = mg.init(100, 100, screen, settings)

    w, h = pygame.display.get_surface().get_size()
    camera = Camera(w / h)
    #Camera.initialize_cam()
    #Camera.transform_blocks()
    #Camera.set_Blocks_settings()

    block_map = BlockMap(map)
    block_map.create_canvas(w * 5, h * 5)
    vw, vh = w * 2 * camera.zoom_level, h * 2 * camera.zoom_level
    block_map.update(vw, vh)

    vp_in_block = calc_view_port(camera, block_map)

    bar = Sidebar.Sidebar(settings)
    move_up = False
    move_down = False
    move_left = False
    move_right = False
    zoom_in = False
    zoom_out = False

    while True:
        screen.fill(colors.white)
        clock.tick(120)

        delta_time = clock.get_time()
        #print(delta_time)

        # -------------------------

        events = pygame.event.get()

        # -----------------------------

        #Camera.change_cam(delta_time, events)

        changed_pos = False
        changed_size = False

        for event in events:
            if event == pygame.QUIT:
                sys.exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 4:
                    camera.zoom_in()
                    changed_size = True
                if event.button == 5:
                    camera.zoom_out()
                    changed_size = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_w or event.key == pygame.K_UP:
                    move_up = True
                if event.key == pygame.K_s or event.key == pygame.K_DOWN:
                    move_down = True
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    move_left = True
                if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    move_right = True
                if event.key == pygame.K_PLUS:
                    zoom_in = True
                if event.key == pygame.K_MINUS:
                    zoom_out = True
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_w or event.key == pygame.K_UP:
                    move_up = False
                if event.key == pygame.K_s or event.key == pygame.K_DOWN:
                    move_down = False
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    move_left = False
                if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    move_right = False
                if event.key == pygame.K_PLUS:
                    zoom_in = False
                if event.key == pygame.K_MINUS:
                    zoom_out = False

        bar.process_event(events)

        if move_up:
            camera.move_up(delta_time)
            changed_pos = True
        if move_left:
            camera.move_left(delta_time)
            changed_pos = True
        if move_down:
            camera.move_down(delta_time)
            changed_pos = True
        if move_right:
            camera.move_right(delta_time)
            changed_pos = True
        if zoom_in:
            camera.zoom_in()
            changed_size = True
        if zoom_out:
            camera.zoom_out()
            changed_size = True

        if changed_size:
            # transform_blocks()
            # set_Blocks_settings()
            vw, vh = w * 2 * camera.zoom_level, h * 2 * camera.zoom_level
            block_map.update(vw, vh)

        if changed_pos or changed_size:
            vp_in_block = calc_view_port(camera, block_map)
            #print(camera.view_port(), vp_in_block)

        block_map.draw(screen, vp_in_block)
        bar.draw_all(screen, delta_time)

        pygame.display.flip()
Пример #8
0
import Helper
import Menu
import Player
import MapGenerator
from Room import Room

pygame.init()

# variables
REFRESH_RATE = Helper.REFRESH_RATE
DISPLAY_SURFACE = Helper.DISPLAY_SURFACE
FPS_CLOCK = pygame.time.Clock()
pygame.display.set_caption('Sekai Saviour')
DISPLAY_SURFACE.fill((79, 51, 44))
player = Player.Player()
MapGenerator.run_separator()


game_state = 'Main_Menu'
prev_game_state = ''
is_paused = False
running = True
game_is_saved = False

first_room = Room()
second_room = Room()


while running:

    while game_state == 'Main_Menu':