Ejemplo n.º 1
0
    def __init__(self, screen, size):
        self.size = size
        self.verticies = []
        self.edges = []
        self.surfaces = []

        # generate map
        # zuerst die Distribution ermitteln
        dist = MapGen.Dist_Function(size, 0.8)
        dist.calcdist()
        dist.clean(4, 1)
        # seed generieren
        seedmap = MapGen.Seedmap(size)
        seedmap.drawfromdist(dist)
        # nun die heightmap zeichnen
        self.heightmap = MapGen.Heightmap(size, 2)
        self.heightmap.gen2_prep(seedmap)
        self.heightmap.slopedown()
        self.heightmap.cleanup()

        # setting up verticies
        for y in range(0, self.size):
            for x in range(0, self.size):
                if self.heightmap.map[x][y] < 0:
                    z = 0
                else:
                    z = self.heightmap.map[x][y] * 0.5
                self.verticies.append((x, y, z))

        #setting up edges
        for j in range(0, self.size):
            for i in range(0, self.size):
                if i - 1 >= 0:
                    self.edges.append(
                        (j * self.size + i, j * self.size + i - 1))
                if j - 1 >= 0:
                    self.edges.append(
                        (j * self.size + i, (j - 1) * self.size + i))
                if i - 1 >= 0 and j - 1 >= 0:
                    self.edges.append(
                        ((j - 1) * self.size + i - 1, j * self.size + i))

        #setting up surfaces
        for j in range(0, self.size):
            for i in range(0, self.size):
                if i - 1 >= 0 and j - 1 >= 0:
                    self.surfaces.append(
                        ((j - 1) * self.size + i - 1, j * self.size + i - 1,
                         j * self.size + i, (j - 1) * self.size + i))

        self.deepwater = Texture('Images/WasserTief.png')
        self.shallwater = Texture('Images/WasserSeicht.png')
        self.sand = Texture('Images/Sand.png')
        self.grass = Texture('Images/Grasmitte.png')
        self.mountain = Texture("Images/DunklerSand.png")

        self.screen = screen
Ejemplo n.º 2
0
 def __init__(self, flags=None):
     global mp
     mp = gen.init()
     if flags == 'debug':
         for y in range(gui.MAPHEIGHT):
             for x in range(gui.MAPWIDTH):
                 mp[x][y].explored = True
         debug_mode = True
     gui.message('You hear zombies all around you.', pygame.Color(0,0,255))
     gen.render_all()
     mainloop()
 def InitializeNextCustomLevel(self, previousLevelSeed):
     next = MapGen.PopNextSeed()
     if next == None:
         self.won = True
     else:
         self.width = next.width
         self.height = next.height
         self.mode = next.mode
         self.progress = next.progress
         self.timedMode = next.timedMode
         self.minutes = next.minutes
         self.map = next.map
     self.citizens = 0
     self.police = 0
    def InitializeSpecialLevel(self, special, previousLevelSeed,
                               previousLevel):
        self.progress = True
        self.timedMode = False
        self.citizens = 0
        self.police = 0
        self.specialName = special

        if special == 'testlevel':
            self.progress = False
            self.width = 32
            self.height = 24
        elif special == 'level1':
            self.width = 20
            self.height = 15
        elif special == 'level2':
            self.width = 29
            self.height = 33
        elif special == 'level3':
            self.width = 64
            self.height = 64
        elif special == 'level4':
            self.width = 150
            self.height = 100
        elif special == 'level5':
            self.width = 250
            self.height = 180
        elif special == 'level6':
            self.mode = 'crowd'
            self.width = 20
            self.height = 15
        elif special == 'level7':
            self.mode = 'crowd'
            self.width = 40
            self.height = 30
        elif special == 'level8':
            self.mode = 'crowd'
            self.width = 80
            self.height = 60
        elif special == 'level9':
            self.mode = 'crowd'
            self.width = 160
            self.height = 120
        self.map = MapGen.BuildMap(special, self.width, self.height,
                                   previousLevelSeed, previousLevel, None)
Ejemplo n.º 5
0
def display_map_canvas(keyword):
    map_frame = tk.Frame(master=root, bg='grey') 
    canvas_size = 1200
    resolution = 10 
    gps_points = gpsPoint.read_drone_csv(r'Data Files/Feb-26th-2021-05-57PM-Flight-Airdata.csv')
    stella_points = StellaPoint.make_stella_list(r'Data Files/data.txt')

    stella_points = StellaPoint.get_batch(stella_points, "1.X")
    map_points,width,height = MapPoint.set_xy(gps_points, stella_points, canvas_size)

    height = round(height/10) * 10
    width = round(width/10) * 10
    
    map_canvas = tk.Canvas(map_frame, width = width, height = height)
    map_canvas.pack()
    poly_fill = MapGen.get_poly(height, width)
    filled = MapGen.draw_data(map_points, poly_fill, keyword, resolution, width)
    MapGen.fill_all(filled, poly_fill, width, height, resolution)
    for t in poly_fill:
        t.draw(map_canvas)
    MapGen.draw_flight_path(map_points, map_canvas)
    map_canvas.pack()
    map_frame.place(x=10, y=10)
 def GenerateCustomMap(self, width, height, isUrban, isCrowd):
     generator = MapGen.Generator(width, height, isUrban, isCrowd)
     while not generator.IsDone():
         generator.DoNextTask()
     commands = generator.commands
     return MapGen.BuildMapFromCommands(commands, width, height, None, None)
Ejemplo n.º 7
0
for i in range(5):
    walkList.append(spriteList[1][i])
#Put all idle momevemt frames into a list
idleList = []
for i in range(2):
    idleList.append(spriteList[0][i])

#Create new projectiles
testBullet = Projectile(bullet, 500, 2000, None, None)

# Create new test weapons
HEMG_weapon = Weapon(gun, testBullet, 95, 7, None, 75, None, 60, 2000)
nav_weapon = MeleeWeapon(bat, 0, 0, None, None, None, None, None, None)

#Create Map
map1 = MapGen(16, 3.2)
MapGen.mrGenny(map1)
map1.mrClassy()
pprint(map1.level)

#Set up camera
cspeed = 400

#Make camera start in middle of start room
for i in range(len(map1.level)):
    for n in range(len(map1.level[i])):
        if map1.level[i][n] == 5:
            playerX, playerY = n * roomScale + roomScale / 2, i * roomScale + roomScale / 2

#create character instance
susano = Player('martialArtist', playerX, playerY, 1000)
Ejemplo n.º 8
0
    def GetPlayScene(self):
        global _registeredSeeds
        _registeredSeeds = None

        levels = []

        width = 28
        height = 24
        if self.mapSize == 2:
            width = 42
            height = 36
        elif self.mapSize == 3:
            width = 64
            height = 48

        swidth = width
        sheight = height

        for i in range(9):
            if i == 5:
                width = swidth
                height = sheight
            levels.append((width, height))
            width = int(width * 1.6)
            height = int(height * 1.6)

        if self.startZoom < 5:
            levels = levels[:5]
        else:
            levels = levels[5:]

        isCrowd = self.args['isCrowd']

        lastWidth = levels[-1][0]
        lastHeight = levels[-1][1]

        lastLevel = MapGen.Generator(lastWidth, lastHeight, True, isCrowd)

        while not lastLevel.IsDone():
            lastLevel.DoNextTask()
        commands = lastLevel.commands
        lastLevel = MapGen.BuildMapFromCommands(commands, width, height, None,
                                                None, None)

        # Generate tiles for big map

        # generate empty maps for smaller maps
        maps = []
        for level in levels:
            #print level
            mp = MapGen.BuildMapFromCommands([], level[0], level[1], None,
                                             None, None)
            #print 'map instance:', len(mp.grid), len(mp.grid[0])
            maps.append(mp)

        maps[-1] = lastLevel

        # determine top left coordinate of smaller map where it is in big map
        offsets = []
        for level in levels:
            x = (lastWidth - level[0]) // 2
            y = (lastHeight - level[1]) // 2
            offsets.append((x, y))

        # blit big map onto smaller maps

        for i in range(len(offsets) - 1):
            x = offsets[i][0] - offsets[i + 1][0]
            y = offsets[i][1] - offsets[i + 1][1]
            maps[i + 1].spriteCarryOver = (x, y)

        for i in range(len(levels) - 1):
            offset = offsets[i]
            xOffset = offset[0]
            yOffset = offset[1]
            level = maps[i]
            size = levels[i]
            width = size[0]
            height = size[1]
            #print i, width,height
            y = 0
            while y < height:
                x = 0
                while x < width:
                    level.grid[x][y] = lastLevel.grid[x + xOffset][y + yOffset]
                    x += 1
                y += 1

        addTheseSprites = []
        # blast out a bunch of sprites. PlayScene will automatically move sprites if they aren't standing in a valid place (like on a roof)
        for i in range(100):
            rx = int(random.random() * lastWidth - 4) + 2
            ry = int(random.random() * lastHeight - 4) + 2
            addTheseSprites.append((rx, ry))

        # sprites in previous level zone move to previous level

        for i in range(len(levels)):
            size = levels[i]
            offset = offsets[i]
            level = maps[i]

            newSpriteList = []
            for sprite in addTheseSprites:
                if sprite[0] < offset[0] or sprite[
                        0] >= offset[0] + size[0] or sprite[1] < offset[
                            1] or sprite[1] >= offset[1] + size[1]:
                    newSpriteList.append(sprite)
                else:
                    x = sprite[0] - offset[0]
                    y = sprite[1] - offset[1]
                    level.citizens.append((x, y, random.random() < .5,
                                           random.choice([1, 2, 3, 4]), x, y))
            addTheseSprites = newSpriteList

        # add a sprite to each border region of each level
        for level in maps:
            level.citizens.append((1, 1, True, 1, 1, 1))

        levels = levels[self.startZoom:]
        maps = maps[self.startZoom:]
        offsets = offsets[self.startZoom:]

        seeds = []
        for i in range(len(levels)):

            #print 'level',i,levels[i][0], levels[i][1], len(maps[i].grid), len(maps[i].grid[0])
            seeds.append(
                GamePlay.LevelSeed(
                    None, {
                        'map': maps[i],
                        'width': levels[i][0],
                        'height': levels[i][1],
                        'isCrowd': isCrowd,
                        'mode': ('individual', 'crowd')[isCrowd],
                        'progress': True,
                        'minutes': self.minutes
                    }))

        _registeredSeeds = seeds
        first = _registeredSeeds[0]
        _registeredSeeds = _registeredSeeds[1:]
        if not self.doProgress:
            _registeredSeeds = []

        return GamePlay.PlayScene(first)
Ejemplo n.º 9
0
#Scale Variables
mapScale = 256

#Init calls
p.init()
MapGen.initGraphics(mapScale)

#Set up screen
tscreenX, tscreenY = 800, 600
screenX, screenY = 200, 150
screen = p.display.set_mode((tscreenX, tscreenY))
centerX, centerY = int(tscreenX / 2), int(tscreenY / 2)

#Create Objects
#Generate the map
map1 = MapGen(16, 3.2)
map1.mrGenny()
map1.mrClassy()
map1.mrRoomy()
pprint(map1.layoutMap)

#Create clock
clock = p.time.Clock()


#Move function for testing
def move(cameraX, cameraY, speed, currentTimeDelta):
    POFFX, POFFY = 0, 0  #Camera direction variables

    #Determine direction of movement
    if p.key.get_pressed()[p.K_d]:  #Right
Ejemplo n.º 10
0
p.init()
MapGen.initGraphics(mapScale) #Load map images

#Set up screen
screenX, screenY = Setup.screenX, Setup.screenY
screen = p.display.set_mode((screenX, screenY))
centerX, centerY = Setup.centerX, Setup.centerY
#Set up window
p.display.set_icon(p.image.load('assets/ui/logo.png'))
p.display.set_caption("Dungeon")


#Object Setups =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#Create Map
numOfElements = 16 
map1 = MapGen(numOfElements,3.2) #Create level map
map1.mrGenny() #Generate the room layout
map1.mrClassy() #Determine the type of room depending on the amount of exits has
map1.mrRoomy() #Generate the room layout of each room
map1.mrCollidey() #Merge the collsion data of the room and room layout
map1.mrDoory(scale) #Create all the doors

#Make a 2d array with all the collision data of all the rooms
for i in range(len(map1.level)): #Iterate through each room of map
    for n in range(len(map1.level[i])):
        rawMapCollide = Collider.importCollisionMap(n,i,numOfElements,map1.roomCollide[i][n],scale) #Create actual rect collision objects
        mapCollide = Collider.convertCollisionGrid(n,i,rawMapCollide,scale,numOfElements)
        map1.mrCollisionData[i][n] = mapCollide
        
pprint(map1.level)
Ejemplo n.º 11
0
def BuildMapFromCommands(commands, mapwidth, mapheight, previousLevelSeed,
                         previousLevel, spriteCarryOver):
    items = []
    citizens = []
    police = []
    tileOverrides = []
    carryover = None
    isCrowdLevel = False
    for line in commands:
        parts = _trim(line).split(' ')
        if parts[0] == 'ROAD':
            item = MapGen.Road(int(parts[1]), int(parts[2]), int(parts[3]),
                               int(parts[4]))
            items.append(item)
        elif parts[0] == 'CROAD':
            isCrowdLevel = True
            item = MapGen.CRoad(int(parts[1]), int(parts[2]), int(parts[3]),
                                int(parts[4]))
            items.append(item)
        elif parts[0] == 'BUILDING':
            item = MapGen.Building(int(parts[1]), int(parts[2]), int(parts[3]),
                                   int(parts[4]), int(parts[5]), int(parts[6]))
            items.append(item)
        elif parts[0] == 'CITIZEN':

            x = int(parts[1])
            y = int(parts[2])

            male = parts[3].upper() == 'M'
            variety = int(parts[4])
            if len(parts) > 5:
                tx = int(parts[5])
                ty = int(parts[6])
            else:
                tx = x
                ty = y
            citizens.append((x, y, male, variety, tx, ty))

        elif parts[0] == 'POLICE':
            x = int(parts[1])
            y = int(parts[2])
            variety = int(parts[3])
            police.append((x, y, variety))
        elif parts[0] == 'BUSH':
            x = int(parts[1])
            y = int(parts[2])
            widthIhatePython = int(parts[3])
            items.append(MapGen.Bush(x, y, widthIhatePython))
        elif parts[0] == 'TREE':
            x = int(parts[1])
            y = int(parts[2])
            type = parts[3].lower()
            items.append(MapGen.Tree(x, y, type))
        elif parts[0] == 'CARRYOVER':
            colorize_center = len(parts) >= 4 and parts[3] == 'COLOR'
            carryover = (int(parts[1]), int(parts[2]), previousLevelSeed,
                         colorize_center)
        elif parts[0] == 'TILE':
            tileOverrides.append((parts[1], int(parts[2]), int(parts[3])))
        elif parts[0] == 'HOUSE':
            x = int(parts[1])
            y = int(parts[2])
            items.append(MapGen.House(x, y, int(parts[3])))
        elif parts[0] == 'RECT':
            type = parts[1]
            left = int(parts[2])
            top = int(parts[3])
            width = int(parts[4])
            height = int(parts[5])
            x = left
            endX = left + width - 1
            endY = top + height - 1

            while x <= endX:
                y = top
                while y <= endY:
                    tileOverrides.append((parts[1], x, y))
                    y += 1
                x += 1

    return Map(mapwidth, mapheight, items, citizens, police, carryover,
               tileOverrides, previousLevel, isCrowdLevel, spriteCarryOver)
 def _StartGame(self):
     gameBuilder = MapGen.CustomGameBuilder(self._args)
     self.next = gameBuilder.GetPlayScene()
Ejemplo n.º 13
0
from MapGen import *
from pygame import *

scale = 64

#Generate the map
map1 = MapGen(16, 2)
MapGen.mrGenny(map1)
pprint(map1.level)

#Initate graphics
screen = display.set_mode((1600, 1200))
MapGen.initGraphics()

for i in range(len(map1.level)):  #For each room
    for n in range(len(map1.level[i])):

        if map1.level[i][n] != 0 and map1.level[i][n] != 2:  #Draw rooms
            #Determine the type of room
            room = map1.levelMap[i][n][1]

            for p in MapGen.roomDict:
                for q in MapGen.roomDict[p]:
                    if map1.levelMap[i][n][1] == MapGen.roomDict[p][q]:
                        roomType = roomTypeList[p][q]

            screen.blit(roomType, (n * scale, i * scale))

        elif map1.level[i][n] == 2:  #Draw hallways
            #Determine the type of room
Ejemplo n.º 14
0
def main():
    # Pygame init()-----------------------------------
    pygame.init()
    pygame.mixer.init(44100, -16, 2, 2048)
    pygame.mixer.set_num_channels(12)
    clock = pygame.time.Clock()
    screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN)
    pygame.display.set_caption("Scary Game")
    titleFont = pygame.font.SysFont("arial", 50)
    smallFont = pygame.font.SysFont("arial", 15)

    # Main Vars --------------------------------------
    mainMenu = [True]
    gameover = [False]
    pause = [False]
    player = Player()
    hud = HUD(screen, titleFont, 0)
    offSet = [0, 0, 0, 0]
    music = pygame.mixer.music.load("sounds/music.wav")
    pygame.mixer.music.set_volume(.4)
    pygame.mixer.music.play(-1)
    gunSound = pygame.mixer.Sound("sounds/gunsound1.wav"), \
               pygame.mixer.Sound("sounds/gunsound2.wav"), \
               pygame.mixer.Sound("sounds/shotgunsound.wav"), \
               pygame.mixer.Sound("sounds/machinegunsound.wav")
    hurt = pygame.mixer.Sound("sounds/collide.wav")
    hit = pygame.mixer.Sound("sounds/hit1.wav"), pygame.mixer.Sound(
        "sounds/hit2.wav")
    hit[0].set_volume(.5)
    hit[1].set_volume(.5)
    gunSound[0].set_volume(settings.gunShotVolume)
    gunSound[1].set_volume(settings.gunShotVolume)
    gunSound[2].set_volume(settings.gunShotVolume)
    gunSound[3].set_volume(settings.gunShotVolume)

    # lists and gamespace ------------------------------

    gameoverScreen = GameOver()
    pauseScreen = Pause()
    mainMenuScreen = MainMenu()
    removeList = []
    enemies = []
    shots = []
    textBoxes = [hud]
    particles = []
    walls = []
    MapGen.generateWalls(walls)
    pickups = [Pickup((100, 600), "smg"), Pickup((1800, 400), "shotgun")]
    gameMap = []
    zombiesKilled = 0
    mapSize = MapGen.generateMap(gameMap)
    gameSpace = (1920, 1080 - hud.getHeight())
    timer = -20
    totalTimer = 115

    # FPS STUFF CAN BE REMOVEDs
    avgFPS = []
    count = 0
    while True:
        if mainMenu[0]:
            pause[0] = False
            gameover[0] = False
            gf.mainMenu(mainMenuScreen, mainMenu)
            mainMenuScreen.blit(screen)
            pygame.display.flip()
            screen.fill(colors["BLACK"])
        elif pause[0]:
            mainMenu[0] = False
            gameover[0] = False
            choice = gf.pauseMenu(pauseScreen, pause)
            if choice == 2:
                mainMenu[0] = [True]
                gameover[0] = [False]
                pause[0] = [False]
                mapSize = MapGen.generateMap(gameMap)
                offSet = [0, 0, 0, 0]
                player.resetAll()
                removeList.clear()
                enemies.clear()
                shots.clear()
                particles.clear()
                walls.clear()
                MapGen.generateWalls(walls)
                pickups = [
                    Pickup((100, 600), "smg"),
                    Pickup((1800, 400), "shotgun")
                ]
                zombiesKilled = 0
                timer = -20
                totalTimer = 130
            pauseScreen.blit(screen)
            pygame.display.flip()
            screen.fill(colors["BLACK"])
        elif gameover[0]:
            mainMenu[0] = False
            pause[0] = False
            choice = gf.gameOver(gameoverScreen)
            if choice == 1:
                mainMenu[0] = [False]
                gameover[0] = [False]
                pause[0] = [False]
                mapSize = MapGen.generateMap(gameMap)
                offSet = [0, 0, 0, 0]
                player.resetAll()
                removeList.clear()
                enemies.clear()
                shots.clear()
                particles.clear()
                walls.clear()
                MapGen.generateWalls(walls)
                pickups = [
                    Pickup((100, 600), "smg"),
                    Pickup((1800, 400), "shotgun")
                ]
                zombiesKilled = 0
                timer = -20
                totalTimer = 130
            gameoverScreen.blit(screen)
            pygame.display.flip()
            screen.fill(colors["BLACK"])
        else:
            timer += 1
            tickSpeed = clock.tick(80)

            count += 1
            if count > 160:
                count = 0
                gf.getAvgFPS(clock.get_fps(), avgFPS)
            # print(tickSpeed)

            gf.updateEvents(player, pickups, pause)
            gf.checkCollision(player, walls)
            gf.getMapOffset(player, offSet, gameSpace, mapSize)
            gf.setMapOffset(player, enemies, offSet, gameMap, pickups, walls,
                            particles)

            for particle in particles:
                particle.blit(screen)

            # Update and Blit Map ---------------------------------------------------------------------
            for block in gameMap:
                if block.type == "wall":
                    gf.checkCollision(player, block)
                block.blit(screen)

            if MapGen.spawningEnemies(timer, totalTimer, enemies):
                timer = 0

            for i, enemy in enumerate(enemies, 0):
                if pygame.Rect.colliderect(enemy.rect, player):
                    hurt.play()
                    player.hp -= 1
                    enemies.pop(i)

            # Player Update and mouse clicks ------------------------------------------------------------
            player.update(tickSpeed)
            # player.melee(screen)
            if player.rightAttack(tickSpeed,
                                  player.inv[player.weaponEquipped].attSpeed):
                if player.inv[player.weaponEquipped].ammo > 0:
                    player.inv[player.weaponEquipped].ammo -= 1
                    player.shot(shots, gunSound)
                else:
                    player.createPistol()
            player.leftAttack(tickSpeed)

            # pickup blit ----------------------------------
            for item in pickups:
                item.blit(screen)

            # Bullet update and blit --------------------------------------------------------------------
            for i, bullet in enumerate(shots, 0):
                if bullet.distance > 0:
                    bullet.distance -= int(tickSpeed / 10 + bullet.speed / 10)
                    bullet.update()
                    pygame.draw.line(screen, colors["YELLOW"], bullet.pos,
                                     bullet.getSecondPoint(), 2)
                else:
                    removeList.append(i)
            gf.cleanList(removeList, shots)

            # Enemy Update and Blit ---------------------------------------------------------------------
            for i, enemy in enumerate(enemies, 0):
                for j, bullet in enumerate(shots, 0):
                    if gf.getDistance(bullet.getMid(), enemy.rect.center) < 20:
                        point2 = bullet.getSecondPoint()
                        if pygame.Rect.collidepoint(
                                enemy.rect, bullet.pos[0],
                                bullet.pos[1]) or pygame.Rect.collidepoint(
                                    enemy.rect, point2[0], point2[1]):
                            hit[random.randint(0, 1)].play()
                            enemy.hp -= bullet.damage
                            shots.pop(j)
                            break

                if enemy.hp > 0:
                    enemy.update(player, tickSpeed)
                    enemy.blit(screen, player)
                else:
                    zombiesKilled += 1
                    if random.randint(1, 50) <= 2:
                        item = Pickup(enemy.rect.center,
                                      gf.getRandomDrop(random.randint(0, 5)))
                        pickups.append(item)
                    removeList.append(i)
            gf.cleanList(removeList, enemies)

            # Player Blit -----------------------------------------------------------------------------
            player.resetMovement()
            player.blit(screen)

            # Text updates and Blit ---------------------------------------------------------------------
            hud.update(titleFont, zombiesKilled)
            for i, text in enumerate(textBoxes, 0):
                if text.life != 999:
                    text.life -= int(tickSpeed / 10)
                if text.life < 0:
                    removeList.append(i)
                else:
                    text.blit(screen)
            gf.cleanList(removeList, textBoxes)

            gf.drawInv(screen, player)
            gf.drawHP(screen, player)

            # ------------------------------------delete-------------------------------------------------------------------------------
            # for wall in walls:
            #     wall.blit(screen)

            if player.hp <= 0:
                gameover[0] = True

            pygame.display.flip()
            screen.fill(colors["BLACK"])
Ejemplo n.º 15
0
def handle_keys():
    global playerx, playery, game_state

    turnkeys = (pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9)

    for event in pygame.event.get():
        if event.type == QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
            quit()
        elif event.type == pygame.KEYUP and pygcurse.interpretkeyevent(event) == '`' and ait.game_state == 'menu':
            gui.win.setscreencolors(None, None, True)
            ait.game_state = 'normal'
            game = Game(flags = 'debug')
            break 
        elif event.type == pygame.KEYUP and event.key == pygame.K_BACKSLASH:
            if gui.win.fullscreen == True:
                gui.win.fullscreen = False
            else:
                gui.win.fullscreen = True
            gen.render_all()


        if ait.game_state == 'normal':        
            if event.type == pygame.KEYUP and event.key in turnkeys:
                if event.key == pygame.K_UP: gen.player.check(0, -1) 
                if event.key == pygame.K_DOWN: gen.player.check(0, 1)
                if event.key == pygame.K_LEFT: gen.player.check(-1, 0)
                if event.key == pygame.K_RIGHT: gen.player.check(1, 0)
                if event.key == pygame.K_7: gen.player.check(-1, -1)
                if event.key == pygame.K_8: gen.player.check(0, -1)
                if event.key == pygame.K_9: gen.player.check(1, -1)
                if event.key == pygame.K_4: gen.player.check(-1, 0)
                if event.key == pygame.K_6: gen.player.check(1, 0)
                if event.key == pygame.K_1: gen.player.check(-1, 1)
                if event.key == pygame.K_2: gen.player.check(0, 1)
                if event.key == pygame.K_3: gen.player.check(1, 1)
                gui.msgs_updated = False
                gen.ai_go()
                gen.render_all()
            elif event.type == pygame.KEYUP and pygcurse.interpretkeyevent(event) == '>':
                for stairs in gen.down_stairs:
                    if gen.player.x == stairs.x and gen.player.y == stairs.y:
                        gen.level += 1
                        gen.area = 'dungeon'
                        gen.create_mp()
            elif event.type == pygame.KEYUP and pygcurse.interpretkeyevent(event) == '<':
                for stairs in gen.up_stairs:
                    if gen.player.x == stairs.x and gen.player.y == stairs.y:
                        if gen.level > 0:
                            gen.area = 'dungeon'
                            gen.create_mp()
                        else:
                            gen.area == 'city'
                            gen.create_mp()

            elif event.type == pygame.KEYUP and pygcurse.interpretkeyevent(event) == '`':
                for y in range(gui.MAPHEIGHT):
                    for x in range(gui.MAPWIDTH):
                        gen.mp[x][y].explored = True
                for Object in gen.objects:
                    gui.win.putchar(Object.char, Object.x, Object.y, fgcolor=pygame.Color(170, 0, 170))
                gui.win.update()
                gui.win.blittowindow()


            elif event.type == pygame.KEYUP and pygcurse.interpretkeyevent(event) == '?':
                gui.win.setscreencolors(None, None, True)
                gui.list(('7 8 9', '4 5 6   Movement Keys', '1 2 3', '', 'Arrow Keys:',  '      UP', 'LEFT DOWN RIGHT', '', '\  : fullscreen', 'ESC: Quit', '', 'press any key to return'))
                gui.win.update()
                gui.win.blittowindow()
                gui.win.setscreencolors(None, None, True)

        elif ait.game_state == 'dead':
            gen.render_all()
  
        elif ait.game_state == 'menu':
            if event.type == pygame.KEYUP:
                return pygcurse.interpretkeyevent(event)
        # elif ait.game_state == 'test':

        else:
            return 'didnt-take-turn'
Ejemplo n.º 16
0
            chestPics[curChest] += 1
            #Limit chest frames
            if chestPics[curChest] >= 5:
                chestPics[curChest] = 5

    #Load map =-=-=-=-=-=-=-=-=-=
    if descend == True:
        #Loading screen
        screen.fill((0, 0, 0))
        p.display.flip()
        #Create new floor
        floor += 1  #Update floor name
        curFloor = 'map' + str(floor)
        complexityScale += 0.2  #Make new floor slightly larger and more complex
        descend = False  #Generate new map
        curMap[curFloor] = MapGen(
            numOfElements, complexityScale)  #Create the map for the new floor

        curMap[curFloor].mrGenny()  #Generate the room layout
        curMap[curFloor].mrClassy(
        )  #Determine the type of room depending on the amount of exits has
        curMap[curFloor].mrRoomy()  #Generate the room layout of each room
        curMap[curFloor].mrCollidey(
        )  #Merge the collsion data of the room and room layout
        curMap[curFloor].mrObby(scale)  #Create all the doors

        #Make a 2d array with all the collision data of all the rooms
        for i in range(len(
                curMap[curFloor].level)):  #Iterate through each room of map
            for n in range(len(curMap[curFloor].level[i])):
                rawMapCollide = Collider.importCollisionMap(
                    n, i, numOfElements, curMap[curFloor].roomCollide[i][n],