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)
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:
#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'
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
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
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