Esempio n. 1
0
    def __init__(self, sresH, sresV, windowname, crosshair_file, fps,
                 enable_shadows):
        # from classes import menu
        self.print('Initializing render thread...')
        threading.Thread.__init__(self)
        self.print('Booting screen...')

        # startwindow
        os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (100, 100
                                                        )  # -> USE IF WINDOWED
        flags = pygame.HWACCEL
        flags |= pygame.HWSURFACE
        self.screen = pygame.display.set_mode(
            (sresH, sresV), flags,
            16)  # -> WINDOW STYLE, add kvarg=FULLSCREEN/NOFRAME
        pygame.display.set_caption(windowname)

        # start cursor
        self.cursorObj = classes.Object(pygame.image.load(crosshair_file),
                                        sresH / 2, sresV / 2, 0, 0)

        # startclock
        self.Clocktime = 0
        self.fpscounterclock = 0
        self.desired_fps = fps
        self.fps = 0
        self.fps_show = 0
        if self.fps != 0:
            self.frametime = (1 // self.desired_fps) * 1000
            self.print('Frametime: ' + str(self.frametime))
            self.print('Max FPS: ' + str(fps))
        else:
            self.frametime = 0
            self.print('Frametime set to 0, running max fps')

        # flags
        self.run_flag = True
        self.show_cursor = True
        self.show_player = False
        self.show_static_objects = False
        self.blit_flags = Blit()
        self.background = False
        self.showUI = False
        self.enable_shadows = enable_shadows

        # debug
        debug_filepath = 'fonts/AndikaNewBasic-R.ttf'
        self.print(' loading file: ' + debug_filepath)
        debug_text_str = 'debug'
        self.debug_text = classes.text(debug_text_str, debug_filepath, 12,
                                       colors.WHITE, 40, 750, 1)
Esempio n. 2
0
def process_item_data(data):
    """ Extracts item data from JSON data and converts into an Item object """
    for key, subdict in data.items():
        key_from_file = key
        room_id = subdict["ROOM_ID"]
        ground_desc = subdict["GROUNDDESC"]
        short_desc = subdict["SHORTDESC"]
        long_desc = subdict["LONGDESC"]
        drink_desc = "You can't drink from that!" # Default description
        hit_desc = "You can't hit that!"
        if subdict.get("DRINKDESC"):
            drink_desc = subdict["DRINKDESC"] # If specified
        eat_desc = "You can't eat that!"
        if subdict.get("EATDESC"):
            eat_desc = subdict["EATDESC"]
        if subdict.get("HITDESC"):
            hit_desc = subdict["HITDESC"]
        talk_desc = "You can't talk to that!"
        if subdict.get("TALKDESC"):
            talk_desc = subdict["TALKDESC"]
        takeable = subdict.get("TAKEABLE")
        equipable = subdict.get("EQUIPABLE")
        enterable = 0
        openable = 0
        destination = None
        if subdict.get("ENTERABLE"):
            enterable = subdict["ENTERABLE"]
        if subdict.get("DESTINATION"):
            destination = subdict["DESTINATION"]
        openable = 0
        locked = 0
        open_desc = "You can't open that!"
        if subdict.get("OPENABLE"):
            openable = 1
            open_desc = subdict["OPENDESC"]
            if subdict.get("LOCKED"):
                locked = 1

        keywords = subdict["KEYWORDS"]
        npc = 0
        if subdict.get("NPC"):
            npc = 1
        hidden = 0
        if subdict.get("HIDDEN"):
            hidden = 1

        item = classes.Object(key_from_file, room_id, ground_desc, short_desc, long_desc, drink_desc, eat_desc, hit_desc, open_desc, talk_desc, takeable, equipable, enterable, openable, locked, destination, npc, hidden, keywords)
        return item
                    == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                FIRST_SCREEN = 0
                CONTINUE_PROGRAM = 0
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:

                    # Create map
                    MAP = classes.Map(constants.MAZE_FILE)
                    MAP.create()
                    MAP.display_map(SCREEN)

                    # Create MacGyver
                    MACGYVER = classes.MacGyver(constants.MACGYVER_IMG, MAP)

                    # Create objects
                    SYRINGE = classes.Object(constants.SYRINGE_IMG, MAP)
                    ETHER = classes.Object(constants.ETHER_IMG, MAP)
                    NEEDLE = classes.Object(constants.NEEDLE_IMG, MAP)

                    # Game loop
                    pygame.key.set_repeat(400, 30)
                    while CONTINUE_GAME:
                        MACGYVER.display_counter(SCREEN)
                        for event in pygame.event.get():

                            # Quit game
                            if event.type == pygame.QUIT:
                                CONTINUE_GAME = 0
                                FIRST_SCREEN = 0
                                CONTINUE_PROGRAM = 0
                            elif event.type == pygame.KEYDOWN:
Esempio n. 4
0
#inicializaões + tela de loading
if 1:
    #loading crosshair file, and starting the renderer thread
    crosshair_file = 'images/cursor/crosshair.png'
    pygame.mouse.set_visible(False)

    #initializes renderer
    renderer = render.render_thread_class(sresH, sresV, 'Raptor',
                                          crosshair_file, fps, enable_shadows)
    renderer.start()

    #printing loading screen
    file = 'images/menu/falido e falencia.png'
    aux = pygame.image.load(file).convert_alpha()
    render.objects.append(classes.Object(aux, 430, 100, 0, 0))

    #loading everything from the user and starting the menu
    data_db_file = 'sql/data.db'
    items_db_file = 'sql/items.db'
    classes.BGMVOL = BGMVOL
    classes.SFXVOL = SFXVOL
    classes.enable_shadows = enable_shadows
    classes.sresH = sresH
    classes.sresV = sresV
    classes.init(data_db_file, items_db_file)

    bgm_file = 'bgm/raptor11.ogg'
    bgm_file2 = 'bgm/raptor09.ogg'
    button_sound_file = 'sounds/menu/button-21.ogg'
    button_select_file = 'sounds/menu/button-22.ogg'
Esempio n. 5
0
def helpScreen(stage, speed):
    crashed = False
    nextButtonC = False
    backButtonC = False
    exitButtonC = False
    screen.fill(inits.red)
    for event in pygame.event.get():
        if event.type == QUIT:
            crashed = True
        if event.type == KEYDOWN:
            if pygame.key.get_pressed()[K_ESCAPE]:
                exitButtonC = True
            if pygame.key.get_pressed()[K_LEFT] or pygame.key.get_pressed(
            )[K_a]:
                if stage == 0:
                    player.turn(turnRate)
            if pygame.key.get_pressed()[K_RIGHT] or pygame.key.get_pressed(
            )[K_d]:
                if stage == 0:
                    player.turn(-turnRate)
            if pygame.key.get_pressed()[K_SPACE]:
                bullet = classes.Object(screen, screenX / 2, 610, inits.bulImg,
                                        90, bulSpeed)
                bullets.append(bullet)
        if event.type == MOUSEBUTTONDOWN:
            nextButtonC = nextButton.clicked()
            backButtonC = backButton.clicked()
            if not exitButtonC:
                exitButtonC = exitButton.clicked()
    if nextButtonC:
        if stage < 2:
            stage += 1
            player.resetxy(screenX / 2, screenY / 2 + 60)
            player.resetrot(90, inits.playImg)
            speed = 2
    if backButtonC:
        if stage > 0:
            stage -= 1
            player.resetxy(screenX / 2, screenY / 2 + 60)
            player.resetrot(90, inits.playImg)
            speed = 2
    exitButton.display()
    helpScreenLine1.display()
    helpScreenLine2.display()
    helpScreenLine3.display()
    if stage == 0:
        player.resetxy(screenX / 2, screenY / 2 + 60)
        player.resetrot(90, inits.playImg)
        player.display()
        helpScreenLine1.appendText('This is the Player')
        helpScreenLine2.appendText('Control Him with A & D')
        helpScreenLine3.appendText('or Left & Right')
        nextButton.display()
    if stage == 1:
        target.tarDisplay(screenX / 2 - 12, screenY / 2)
        helpScreenLine1.appendText('This is the Target')
        helpScreenLine2.appendText('Use Space to Shoot it')
        helpScreenLine3.appendText('')
        nextButton.display()
        backButton.display()
        for bullet in bullets:
            bullet.move(bulSpeed)
            bullet.display()
            if bullet.objectCollision(target):
                bullets.remove(bullet)
                continue
    if stage == 2:
        player.resetrot(180, inits.playImg)
        helpScreenLine1.appendText('This is a Wall')
        helpScreenLine2.appendText('Don\'t hit it or else')
        helpScreenLine3.appendText('you will die')
        backButton.display()
        if player.objectCollision(wall2):
            player.resetrot(0, inits.rubImg)
            speed = 0
        player.move(speed / 2)
        player.display()
        wall2.resetxy(150, screenY - 240)
        wall2.display()
    helpScreenList = [crashed, stage, exitButtonC]
    return helpScreenList
Esempio n. 6
0
def runScreen(score, speed):
    crashed = False
    died = False
    screen.fill(inits.red)
    for event in pygame.event.get():
        if event.type == QUIT:
            crashed = True
        if event.type == KEYDOWN:
            if pygame.key.get_pressed()[K_LEFT] or pygame.key.get_pressed(
            )[K_a]:
                player.turn(turnRate)
            if pygame.key.get_pressed()[K_RIGHT] or pygame.key.get_pressed(
            )[K_d]:
                player.turn(-turnRate)
            if pygame.key.get_pressed()[K_UP] or pygame.key.get_pressed()[K_w]:
                if speed <= 5:
                    speed += 0.5
            if pygame.key.get_pressed()[K_DOWN] or pygame.key.get_pressed(
            )[K_s]:
                if speed >= 1:
                    speed -= 0.5
            if pygame.key.get_pressed()[K_SPACE]:
                playerxy = player.get_xy()
                bullet = classes.Object(screen, playerxy[0], playerxy[1],
                                        inits.bulImg, playerxy[2], bulSpeed)
                bullets.append(bullet)
    while target.objectCollision(wall1) or target.objectCollision(
            wall2) or target.objectCollision(wall3) or target.objectCollision(
                wall4) or target.objectCollision(topBar):
        target.random()
    for bullet in bullets:
        bullet.move(bulSpeed)
        if bullet.borderCollision():
            bullets.remove(bullet)
            continue
        if bullet.objectCollision(wall1) or bullet.objectCollision(
                wall2) or bullet.objectCollision(
                    wall3) or bullet.objectCollision(
                        wall4) or bullet.objectCollision(topBar):
            bullets.remove(bullet)
            continue
        bullet.display()
        if bullet.objectCollision(target):
            bullets.remove(bullet)
            target.random()
            score += 1
            gameScore.appendText('Score: ' + str(score))
            continue
    if player.borderCollision():
        died = True
    if player.objectCollision(wall1) or player.objectCollision(
            wall2) or player.objectCollision(wall3) or player.objectCollision(
                wall4) or player.objectCollision(topBar):
        died = True
    if died:
        speed = 0
        player.resetrot(90, inits.rubImg)
    wall1.display()
    wall2.display()
    wall3.display()
    wall4.display()
    topBar.display()
    gameScore.display()
    target.display()
    player.move(speed)
    player.display()
    runScreenList = [crashed, score, speed, died]
    return runScreenList
Esempio n. 7
0
                            inits.black, inits.arial30, 'Next', inits.red)
backButton = classes.Button(screen, screenX / 4, 500, 100, 50, inits.black,
                            inits.arial30, 'Back', inits.red)
exitButton = classes.Button(screen, 50, 10, 100, 50, inits.red, inits.arial30,
                            'Exit', inits.black)

helpScreenLine1 = classes.Text(screen, screenX / 2, 100, inits.arial30,
                               'helpScreenLine1', inits.black)
helpScreenLine2 = classes.Text(screen, screenX / 2, 140, inits.arial30,
                               'helpScreenLine2', inits.black)
helpScreenLine3 = classes.Text(screen, screenX / 2, 180, inits.arial30,
                               'helpScreenLine3', inits.black)

bullets = []

player = classes.Object(screen, screenX / 2, screenY / 2 + 60, inits.playImg,
                        90, speed)
target = classes.Target(screen, inits.tarImg)
wall1 = classes.Wall(screen, 150, 175, 10, 100, inits.bulImg)
wall2 = classes.Wall(screen, 150, screenY - 175, 10, 100, inits.bulImg)
wall3 = classes.Wall(screen, screenX - 150, 175, 10, 100, inits.bulImg)
wall4 = classes.Wall(screen, screenX - 150, screenY - 175, 10, 100,
                     inits.bulImg)
topBar = classes.Wall(screen, screenX / 2, 0, screenX, 70, inits.bulImg)
trimBar = classes.Wall(screen, screenX / 2, 423, screenX, 50, inits.bulImg)
pygame.key.set_repeat(100, 100)


def startScreen():
    crashed = False
    startButtonC = False
    helpButtonC = False