Example #1
0
File: Game.py Project: Neopibox/MDD
def interact(g, settings, keyRead):
        # Actualiser les nouvelles touches du fichier settings:   
        keyM = g["keyManager"]
        for keyName in keyM:
                for k in settings:
                        if keyName == k:
                                keyM[keyName] = settings[k]      

        player = Dungeon.getPlayer(g["dungeon"])
        playerSpeedValue = 15

        if keyM["Up"] == keyRead:
                Entity.setSpeed(player, 0, -playerSpeedValue)
                
        elif keyM["Down"] == keyRead:
                Entity.setSpeed(player, 0, playerSpeedValue)
                
        elif keyM["Left"] == keyRead:
                Entity.setSpeed(player, -playerSpeedValue*2, 0)
                
        elif keyM["Right"] == keyRead:
                Entity.setSpeed(player, playerSpeedValue*2, 0)
                
        elif keyM["Shoot"] == keyRead:
                Dungeon.launchArrow(g["dungeon"], player)
                
        elif keyM["Chest"] == keyRead:
                Dungeon.openChest(g["dungeon"])
Example #2
0
def interact(g, settings, keyRead):
    # Actualiser les nouvelles touches du fichier settings:
    keyM = g["keyManager"]
    for keyName in keyM:
        for k in settings:
            if keyName == k:
                keyM[keyName] = settings[k]

    player = Dungeon.getPlayer(g["dungeon"])
    playerSpeedValue = 15

    if keyM["Up"] == keyRead:
        Entity.setSpeed(player, 0, -playerSpeedValue)

    elif keyM["Down"] == keyRead:
        Entity.setSpeed(player, 0, playerSpeedValue)

    elif keyM["Left"] == keyRead:
        Entity.setSpeed(player, -playerSpeedValue * 2, 0)

    elif keyM["Right"] == keyRead:
        Entity.setSpeed(player, playerSpeedValue * 2, 0)

    elif keyM["Shoot"] == keyRead:
        Dungeon.launchArrow(g["dungeon"], player)

    elif keyM["Chest"] == keyRead:
        Dungeon.openChest(g["dungeon"])
Example #3
0
	def generate(self, width, height):
		"""
			Generates the dungeon according to the following steps, similar to A* algorithm:
			* Determine entrance.
			* Determine exit.
			* Start at the entrance.
			* Calculate weighting function for every adjacent tile.
			* Make tile with lowest weighting value walkable.
			* Calculate weighting function for adjacent tiles of newly added tile.
			* Repeat last two steps until exit is reached.

			Returns Dungeon map
		"""
		self.width = width
		self.height = height

		self.start_x = width-5
		self.start_y = height-5

		self.exit_x = 5
		self.exit_y = 5

		# generate the heightmap and weights
		self.generate_heightmap()
		self.calculate_weights()

		# make tiles walkable where the player should be able to move
		walkable_area = self.generate_walkable()

		# create an empty dungeon map and pave walkable area
		dungeon_map = Dungeon(width, height, 16,16)
		dungeon_map.make_walkable(walkable_area)

		# return map
		return dungeon_map
 def test_when_spawning_the_hero_is_unsuccessful_then_resturn_false(self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/empty.txt', h, 2)
     self.assertFalse(d.spawn())
 def test_moving_the_hero_to_an_obstacle_then_return_false(self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     d.spawn()
     self.assertFalse(d.move_hero('down'))
Example #6
0
File: Game.py Project: Neopibox/MDD
def run(g, dt):
        if Dungeon.run(g["dungeon"], dt) == "win":
		return "win"

        player = Dungeon.getPlayer(g["dungeon"])
        if Entity.getHealth(player) <= 0:
                return "lose"
        
        return "run"
Example #7
0
def run(g, dt):
    if Dungeon.run(g["dungeon"], dt) == "win":
        return "win"

    player = Dungeon.getPlayer(g["dungeon"])
    if Entity.getHealth(player) <= 0:
        return "lose"

    return "run"
Example #8
0
def main():
    # parser = argparse.ArgumentParser(description='CPSC 481 Project')
    # parser.add_argument('-s', '--size', type=int ,default = 64, help = "Usage:-f <filename>.csv\nThis will write the results to the file specified.")
    # parser.add_argument('-d', '--difficulty', type=str,default = 'normal', help = "Usage:-f <filename>.csv\nThis will write the results to the file specified.")
    # parser.add_argument('-n', '--number', type =int, default = 1, help= "The number of adversary AI you want to spawn")
    # parser.add_argument('-r', '--rooms', type =int, default = 4, help= "The number of \'rooms\' you want to spawn")
    pygame.init()
    # COLORS
    black = (0, 0, 0)
    white = (255, 255, 255)

    # WINDOW
    screen = pygame.display.set_mode((0,0))
    screen = pygame.display.set_mode((screen.get_height()-160,screen.get_height()-160))
    pygame.display.set_caption("Minotaur Maze")

    #GAME LOOP: Plays game until user exit
    gameLoop = True

    # MAN PROGRAM LOOP
    dungeon = Dungeon.Generator(30, 30, 5, 3 ,4,2 )
    dungeon.gen_level()
    dungeon.gen_tiles_level()
    dungeon.gen_enemies(1)
    dungeon.update_ai()
    levels_completed =0
    #pygame.key.set_repeat(0,1500)
    #dungeon.update_ai()
    #dungeon.play_game()

    while gameLoop:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameLoop = False
            if event.type == pygame.KEYDOWN:
                dungeon.play_game()
        dungeon.ai_walk(0.2,4)
        dungeon.render(screen,  0, 10)
        state = dungeon.check_state()
        if(state == "lose"):
            gameLoop = False
            print("You Lost!")
        elif(state == "win"):
            play_again = input("On to the next level? Y/n:")
            if(play_again == "Y"):
                dungeon = Dungeon.Generator(30, 30, 5, 3,4, 2)
                dungeon.gen_level()
                dungeon.gen_tiles_level()
                dungeon.gen_enemies(2)
                dungeon.update_ai()
                dungeon.render(screen,  250, 10)
            else:
                gameLoop = False
                #print("You completed "+ to_string(levels_completed)+ " levels!")


        pygame.display.update()
 def test_moving_the_hero_out_of_boundaries_of_the_map_then_return_false_and_print_message(
         self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     d.spawn()
     self.assertFalse(d.move_hero('left'))
 def test_when_spawning_the_hero_then_change_S_to_H(self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     d.spawn()
     letter_on_the_map = d.tmp_map[d.hero_position_X][d.hero_position_Y]
     self.assertEqual('H', letter_on_the_map)
 def test_moving_the_hero_down_when_there_are_no_obstacles_then_return_true(
         self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/no_obstacles.txt', h, 2)
     d.spawn()
     self.assertTrue(d.move_hero('down'))
 def test_getting_the_spawning_coordinates_of_the_hero_on_the_S_location_on_map(
         self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     d.spawn()
     result = [d.hero_position_X, d.hero_position_Y]
     expected = [1, 0]
     self.assertEqual(result, expected)
Example #13
0
def main():
    # create dungeon with a single NxN level
    N = 3  # must be >= 2
    testDungeon = Dungeon.Dungeon()
    testLevel = Dungeon.DungeonLevel()
    testLevel.make_grid(N, N)
    testDungeon.add_level(testLevel)

    assert (len(testDungeon.dLevels) == 1)
    assert (testLevel.tile_at(testLevel.maxX, testLevel.maxY))
    assert (not testLevel.tile_at(N, 0))
    assert (testLevel.tile_at(0, 0) == testLevel.get_neighbor(
        testLevel.tile_at(1, 1), 'nw'))
    try:
        testLevel.get_neighbor(testLevel.tile_at(0, 0), 'n')  # should fail
        assert (False)
    except Dungeon.DungeonLevelError:
        # failed as expected, so continue
        pass
    print 'Dungeon creation passed'

    # create hero and place at (1, 1)
    testHero = Mob.Hero('tester', 'female', 'archeologist', 'dwarf', 'chaotic')
    testHero.set_dungeon_level(testLevel)
    testHero.set_location(testLevel.tile_at(1, 1))
    assert (testHero.get_location().x == 1 and testHero.get_location().y == 1)
    print 'Hero creation passed'

    # place food ration at (1, 0) and have hero pick up
    testComestible = Item.FoodRation()
    testLevel.tile_at(1, 0).add_item(testComestible)
    assert (len(testLevel.tile_at(1, 0).items) == 1)
    testHero.move('n')
    assert (testHero.get_location() == testLevel.tile_at(1, 0))
    assert (len(testLevel.tile_at(1, 1).mobs) == 0)
    assert (testLevel.tile_at(1, 0).mobs[0] == testHero)
    testHero.pick_up(testComestible)
    assert (len(testLevel.tile_at(1, 0).items) == 0)
    assert (testHero.inventory[0] == testComestible)
    assert (testHero.get_weight_carried() == testComestible.get_weight())
    print 'Hero movement and pickup passed'

    # have hero eat food ration
    heroNutritionBefore = testHero.get_nutrition()
    testHero.eat(testComestible)
    heroNutritionAfter = testHero.get_nutrition()
    assert (len(testHero.inventory) == 0)
    assert (heroNutritionAfter -
            heroNutritionBefore == testComestible.get_nutrition_value())
    assert (testHero.get_weight_carried() == 0)
    print 'Hero eating passed'

    return testDungeon
Example #14
0
def create():
    game = dict()
    game["dungeon"] = Dungeon.create("forest")

    settings = Settings.create()
    game["keyManager"] = settings
    #for keyName in settings:
    #dataKey = dict()
    #dataKey.update({"key": settings[keyName]})
    #game["keyManager"].update({keyName: dataKey})

    Dungeon.generate(game["dungeon"])
    return game
Example #15
0
File: Game.py Project: Neopibox/MDD
def create():
        game = dict()
        game["dungeon"] = Dungeon.create("forest")
        
        settings = Settings.create()
        game["keyManager"] = settings
        #for keyName in settings:
                #dataKey = dict()
                #dataKey.update({"key": settings[keyName]})
                #game["keyManager"].update({keyName: dataKey})
                
        Dungeon.generate(game["dungeon"])
        return game
def handleCollisions(globs):
    room = globs.dungeon[globs.player.pos.roomnum]

    checkItems(globs, room)
    rt = False
    if globs.trap == 1:
        globs.floor += 1
        rt = True
    elif globs.trap == 2:
        globs.floor -= 1
        rt = True

    if rt:
        globs.dungeon = Dungeon.genDungeon()
        globs.player.pos = Position.Position(0, 2, 1)
        globs.trap = 0
        Enemy.genEnemies(globs)
        return

    room = checkDoors(globs, room)

    if globs.player.pos.x < 1:
        globs.player.pos.x += 1
    elif globs.player.pos.x > room.width - 2:
        globs.player.pos.x -= 1
    elif globs.player.pos.y < 1:
        globs.player.pos.y += 1
    elif globs.player.pos.y > room.height:
        globs.player.pos.y -= 1
 def store(self,saveName):
     fileName = saveName+GameState.SAVE_FILE_EXT
     saveFile = open(fileName,"a")
     saveFile.write(GameState.SAVE_FILE_VERSION)
     Dungeon.StoreState(saveFile)
     saveFile.write(GameState.CURRENT_ROOM_LEADER+getAdventurersCurrent().getName())
     saveFile.close()
Example #18
0
def main():
    name = input("Enter your characters name: ")
    hero = chooseClass(name)

    dungeon = Dungeon.Dungeon()

    dungeon.enterDungeon(hero)
 def test_dungeon_initialization_when_empty_map(self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/empty.txt', h, 2)
     self.assertEqual(d.tmp_map, [])
 def test_dungeon_initialization_when_map_is_correct(self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     expected_map = [['.', '.', '#'], ['S', 'T', '.'], ['#', '.', 'G']]
     self.assertEqual(d.tmp_map, expected_map)
 def test_getting_the_dimentions_of_the_current_map(self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     expected = (3, 3)
     self.assertEqual((d.X, d.Y), expected)
Example #22
0
 def new_filled_dungeon(self):
     monsters = []
     temp_deck = copy.deepcopy(self.deck_init)
     temp_deck.shuffle()
     for monster in self.known_monsters:
         if monster == None:
             monsters.append(temp_deck.draw())
         else:
             monsters.append(monster)
     return Dungeon.Dungeon(monsters)
 def test_getting_the_end_point_of_the_map_then_return_its_coordinates(
         self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/test.txt', h, 2)
     result = d.endpoint
     expected = (2, 2)
     self.assertEqual(result, expected)
Example #24
0
def show(g):
    Dungeon.show(g["dungeon"])

    # -- Interface du joueur --
    player = Dungeon.getPlayer(g["dungeon"])
    offsetX = 84
    offsetY = 2

    # Clear
    for i in range(1, 41):
        Utils.goto(offsetX, i + 1)
        Utils.write(29 * " " + "\n")

    # Link
    Utils.goto(offsetX + 1, offsetY + 1)
    Utils.write("Link", "green")

    # Health
    health = Entity.getHealth(player)
    maxHealth = Entity.getMaxHealth(player)
    Utils.goto(offsetX + 1, offsetY + 3)
    Utils.write("Health : " + str(health) + " / " + str(maxHealth))
    Utils.goto(offsetX + 1, offsetY + 4)
    healthBar = int(round((health / maxHealth) * 10)) * "♥ "
    Utils.write(healthBar.decode("utf-8"), "red")

    # Strength
    strength = Entity.getStrength(player)
    Utils.goto(offsetX + 1, offsetY + 6)
    Utils.write("Strength : + " + str(int((strength - 1) * 100)) + "%")

    # Resistance
    resistance = Entity.getResistance(player)
    Utils.goto(offsetX + 1, offsetY + 8)
    Utils.write("Resistance : + " + str(int((resistance - 1) * 100)) + "%")

    # Damage
    damage = Entity.getDamage(player)
    Utils.goto(offsetX + 1, offsetY + 10)
    Utils.write("Damage : " + str(damage))
Example #25
0
File: Game.py Project: Neopibox/MDD
def show(g):
        Dungeon.show(g["dungeon"])
        
        # -- Interface du joueur --
        player = Dungeon.getPlayer(g["dungeon"])
        offsetX = 84
        offsetY = 2
        
        # Clear
        for i in range(1, 41):
                Utils.goto(offsetX, i+1)
                Utils.write(29*" "+"\n")

        # Link
        Utils.goto(offsetX+1, offsetY+1)
        Utils.write("Link", "green")
        
        # Health
        health = Entity.getHealth(player)
        maxHealth = Entity.getMaxHealth(player)
        Utils.goto(offsetX+1, offsetY+3)
        Utils.write("Health : " + str(health) + " / " + str(maxHealth))
        Utils.goto(offsetX+1, offsetY+4)
        healthBar = int(round((health/maxHealth)*10))*"♥ "
        Utils.write(healthBar.decode("utf-8"), "red")
        
        # Strength
        strength = Entity.getStrength(player)
        Utils.goto(offsetX+1, offsetY+6)
        Utils.write("Strength : + " + str(int((strength-1)*100)) + "%")
        
        # Resistance
        resistance = Entity.getResistance(player)
        Utils.goto(offsetX+1, offsetY+8)
        Utils.write("Resistance : + " + str(int((resistance-1)*100)) + "%")
        
        # Damage
        damage = Entity.getDamage(player)
        Utils.goto(offsetX+1, offsetY+10)
        Utils.write("Damage : " + str(damage))
Example #26
0
def init():
    global globs
    os.system("mode 200,60")
    os.system("color 5E")
    globs.dungeon = Dungeon.genDungeon()
    globs.player = Player.Player()
    globs.audio = Audio.Audio()

    globs.event(
        "You have entered pony dungeon in the quest for the sword of awesomeness!"
    )
    globs.event("Press h at anytime to view a help menu.")
    globs.event("Press q at anytime to quit the game.")
Example #27
0
    def plan(self, globs):
        dim = len(globs.dungeon)

        self.paths = Dungeon.adjMatrix(globs.dungeon)
        dists = deepcopy(self.paths)
        for i in range(len(dists)):
            for j in range(len(dists)):
                if dists[i][j] == 0:
                    dists[i][j] = 1E1000
                    self.paths[i][j] = None

        for i in range(dim):
            for j in range(dim):
                for k in range(dim):
                    edgeNum = dists[j][i] + dists[i][k]
                    if dists[j][k] > edgeNum:
                        dists[j][k] = edgeNum
                        self.paths[j][k] = self.paths[j][i]
 def test_moving_the_hero_down_when_there_are_no_obstacles_then_compare_the_updated_coordinates(
         self):
     h = Hero(name="Bron",
              title="Dragonslayer",
              health=100,
              mana=100,
              mana_regeneration_rate=2)
     d = Dungeon('test_maps/no_obstacles.txt', h, 2)
     d.spawn()
     old_coordinates_after_update = (d.hero_position_X + 1,
                                     d.hero_position_Y)
     d.move_hero('down')
     new_coordinates = (d.hero_position_X, d.hero_position_Y)
     self.assertEqual(old_coordinates_after_update, new_coordinates)
Example #29
0
    def __init__(self):
        self.mode = MODE_COMMANDS  # Other is MODE_USERPLAY where you are in control of the hero

        if CURSES:
            # Initialize curses
            cbreak()
            noecho()

        # Initialize the Kernel
        Kernel()

        # Set's up the socket
        NethackSock()

        # Socket observers
        SocketLogger(
        )  # This should be before other stuff for easier debugging
        FramebufferParser()
        DGLParser()

        # Stuff
        Console()
        Cursor()
        Dungeon()
        Hero()
        MonsterSpoiler()
        ItemDB()
        Inventory()

        # AI
        Personality()
        Senses()
        Pathing()

        # Brains
        curBrain = TestBrain()

        Kernel.instance.Personality.setBrain(curBrain)  # Default brain
Example #30
0
    elif userInput == "toSmith":
        os.system('cls' if os.name == 'nt' else 'clear')  # It clear the cmd screen
        Smith.equipmentImprovement(player, language)

    elif userInput == "leave":
        break

    else:

        # ==============================================================
        # Dungeon 1 to 50
        #

        if userInput == "toDungeon 1":
            Dungeon.enemyDungeon(player, language, language[97], 10, 8, 10, 0, 2, 1, 1)

        elif userInput == "toDungeon 2":
            Dungeon.enemyDungeon(player, language, language[98], int(20 * difficultModeNumber),
                                 int(15 * difficultModeNumber), int(15 * difficultModeNumber),
                                 int(8 * difficultModeNumber), 4, 2, 2)

        elif userInput == "toDungeon 3":
            Dungeon.enemyDungeon(player, language, language[99], int(50 * difficultModeNumber),
                                 int(30 * difficultModeNumber), int(20 * difficultModeNumber),
                                 int(25 * difficultModeNumber), 8, 5, 5)

        elif userInput == "toDungeon 4":
            Dungeon.enemyDungeon(player, language, language[100], int(80 * difficultModeNumber),
                                 int(50 * difficultModeNumber), int(35 * difficultModeNumber),
                                 int(35 * difficultModeNumber), 10, 8, 8)
Example #31
0
File: Game.py Project: Neopibox/MDD
def restart(g):
        player = Dungeon.getPlayer(g["dungeon"])
        Entity.setHealth(player, Entity.getMaxHealth(player))
	Dungeon.generate(g["dungeon"], player)
Example #32
0
#Set Colors - Colors in pyGame are in RGB format. This is out of convenience.
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

#Here we initialize the pygame surface and create the Displaysurface which will hold our main screen, passing along the board size variables*32 for actual pixel size.
pygame.init()
DISPLAYSURF = pygame.display.set_mode((boardWidth*32,boardHeight*32+160), 0, 32)
pygame.display.set_caption('Dev') #Window Title
DISPLAYSURF.fill(WHITE) #Fill the screen area with white.

#Create LevelHandler to keep track of dungeons and current floor
#Create new dungeon with the width and height specified.
dungeon = Dungeon(boardWidth, boardHeight)



#All elements in the object list will be printed when drawObjects are called.
#dungeon.objectlist = []
#Code to generate a monster a random location
dungeon.room_Generation(boardWidth,boardHeight)


#Append some items to the dungeon.objectlist
healer= NPC(64,0,200,1,'healer', Rarity_Database, database)
shopkeeper= NPC(0,64,200,1,'shopkeeper', Rarity_Database, database)
player = Player(32,32,'images/player.png',"Name",5000,50)
dungeon.objectlist.append(player)
dungeon.objectlist.append(healer)
 def initialize(self, dungeon):
     self.dungeon = dungeon
     self.test = True
     adventurersCurretRoom = Dungeon.getEntry()
Example #34
0
def message(text,color=(255,255,255)):
    global message_text, message_color
    message_text = text
    message_color = color


#define ASCII codes used for dungeon
TILE_EMPTY = 177
TILE_ROOM = 31
TILE_HALL = 31

#main program begins
game_init()
game_over = False
last_time = 0
dungeon = Dungeon(30, 30)
dungeon.generate(TILE_EMPTY,TILE_ROOM,TILE_HALL)
player = Player(dungeon, 1, "Player")
player.x = dungeon.entrance_x+1
player.y = dungeon.entrance_y+1
level = 1
message_text = "Welcome, brave adventurer!"
message_color = 0,200,50
draw_radius = False

#used to estimate attack damage
att = list(0 for n in range(0,5))
attlow=90
atthigh=0

#main loop
Example #35
0
def restart(g):
    player = Dungeon.getPlayer(g["dungeon"])
    Entity.setHealth(player, Entity.getMaxHealth(player))
    Dungeon.generate(g["dungeon"], player)
Example #36
0
def message(text, color=(255, 255, 255)):
    global message_text, message_color
    message_text = text
    message_color = color


#define ASCII codes used for dungeon
TILE_EMPTY = 177
TILE_ROOM = 31
TILE_HALL = 31

#main program begins
game_init()
game_over = False
last_time = 0
dungeon = Dungeon(30, 30)
dungeon.generate(TILE_EMPTY, TILE_ROOM, TILE_HALL)
player = Player(dungeon, 1, "Player")
player.x = dungeon.entrance_x + 1
player.y = dungeon.entrance_y + 1
level = 1
message_text = "Welcome, brave adventurer!"
message_color = 0, 200, 50
draw_radius = False

#used to estimate attack damage
att = list(0 for n in range(0, 5))
attlow = 90
atthigh = 0

#main loop
Example #37
0
import Dungeon

d = Dungeon.genDungeon()
room = d[0]
print(room.show())

room = d[room.doors[0]]
print(room.show())