def render_landscape_screen(): seq_duration = 40.0 fx_timer = 0.0 y_offset = 50 logo_freq = 6 while fx_timer < seq_duration: dt_sec = clock.update() fx_timer += dt_sec render.clear() render.set_blend_mode2d(render.BlendAlpha) render.image2d( (demo_screen_size[0] - 320 * zoom_size()) * 0.5, (demo_screen_size[1] - (34 + y_offset) * zoom_size()) * 0.5, zoom_size(), "@assets/landscape_mountains.png") render.image2d( (demo_screen_size[0] - 100 * zoom_size()) * 0.5, (demo_screen_size[1] - (80 + y_offset) * zoom_size()) * 0.5, zoom_size(), "@assets/landscape_stones.png") x, y = math.cos( fx_timer / seq_duration * math.pi * 2 * logo_freq) * 16, math.sin( fx_timer / seq_duration * math.pi * 5 * logo_freq) * 16 render.image2d( (demo_screen_size[0] - (187 + x) * zoom_size()) * 0.5, (demo_screen_size[1] - (106 - 80 + y) * zoom_size()) * 0.5, zoom_size(), "@assets/logo_exxos.png") render.set_blend_mode2d(render.BlendOpaque) render.flip()
def render_space_screen(): seq_duration = 20.0 fx_timer = 0.0 while fx_timer < seq_duration: dt_sec = clock.update() fx_timer += dt_sec render.clear() render.set_blend_mode2d(render.BlendAlpha) x_star = RangeAdjust(fx_timer, 0.0, seq_duration, demo_screen_size[0], -53 * zoom_size()) x_moon = RangeAdjust(fx_timer, seq_duration * 0.475, seq_duration, demo_screen_size[0], -60 * zoom_size()) x_planet = RangeAdjust(fx_timer, seq_duration * 0.65, seq_duration, demo_screen_size[0], -95 * zoom_size()) render.image2d(x_star, (demo_screen_size[1] - 53 * zoom_size()) * 0.5, zoom_size(), "@assets/space_star.png") render.image2d(x_moon, (demo_screen_size[1] - 60 * zoom_size()) * 0.5, zoom_size(), "@assets/space_moon.png") render.image2d(x_planet, 0, zoom_size(), "@assets/space_planet.png") render.set_blend_mode2d(render.BlendOpaque) render.flip()
def generation(gourou, gourou_index_list): print(gourou_index_list) index_gourou = (gourou_index_list[0] + gourou_index_list[1] * 3) + 1 while not input.key_press(gs.InputDevice.KeyEnter): render.clear(gs.Color.White) # dessine_fond_qui_scroll() afficheTexte(800, 500, 'Voyons désormais quel est ton Gourou ....') # render.set_blend_mode2d(1) # render.image2d((1920-400)/2,(1024-350)/2,1.0,'@data/gourou' + str(index_gourou) + '.png') # render.set_blend_mode2d(0) render.flip() render.flip() # print(render.get_font(lesGourou [index_gourou])) gourou_scale = 0.25 gourou_acc = 0.995 y_offset = 0.0 while not input.key_press(gs.InputDevice.KeyEnter): render.clear(gs.Color.White) dessine_fond_qui_scroll() afficheTexte(700, 850, lesGourou[index_gourou-1] ) # afficheTexte(1050, 400, 'Au coeur ' + str(getTxt(phases, 1, indexImg[0], indexImg[1]))) # afficheTexte(1100, 300, 'Qui regarda '+str(getTxt(phases,2,indexImg[1], indexImg[2] ))) render.set_blend_mode2d(1) gourou_scale_tmp = gourou_scale * 1.5 render.image2d((1920 - (400 * gourou_scale_tmp)) / 2, (1024 - (350 * gourou_scale_tmp)) / 2 + y_offset * (1.0 - gourou_scale * gourou_scale), gourou_scale_tmp, '@data/gourou' + str(index_gourou) + '.png') render.set_blend_mode2d(0) render.flip() gourou_scale = (gourou_scale * gourou_acc + (1.0 - gourou_acc)) y_offset = y_offset * 0.95 + 0.5 * random.randint(-15, 15) render.flip() return index_gourou - 1
def selection(): global indexImg Gourou = [] gourou_index_list = [] indexDecor = 0 indexEntrer = -1 amplitude = 1 indexImg = {} for phase in range(len(phases)): joue_sfx_phase() entrer = False angle = 0 while not entrer: render.clear(gs.Color.White) # dessine_fond_qui_scroll() if input.key_press(gs.InputDevice.KeyLeft) and indexDecor > 0: indexDecor = (indexDecor - 1) % getImgParPha(phases) # joue_sfx_selection() amplitude = 1 if input.key_press(gs.InputDevice.KeyRight) and indexDecor < getImgParPha(phases) - 1: indexDecor = (indexDecor + 1) % getImgParPha(phases) # joue_sfx_selection() amplitude = 1 if indexDecor >= 0: amplitude *= 0.95 yOffSet = [0, 0, 0] # print(indexDecor) render.set_blend_mode2d(1) afficheImageNot(430, 165 + 25, 1, '@data/ornement_gauche.png') afficheImageNot(1090, 165 + 25, 1, '@data/ornement_droite.png') render.set_blend_mode2d(0) if phase == 0: yOffSet[indexDecor] = random.randint(-5, 5) afficheImage((SCREEN_W - 1050) / 2, 285 + random.randint(-25, 25) * amplitude, phase, 1.0, indexDecor, 0) afficheTexte(800, 220 + 25, 'OÙ VEUX TU TE RETIRER ?', size=0.75) render.set_blend_mode2d(1) afficheImageNot(600, 50, 1, '@data/choix_paysage.png') render.set_blend_mode2d(0) if indexDecor == 0: afficheTexte(620, 25 + yOffSet[0], getTxt(phases, phase, 0, 0)) if indexDecor == 1: afficheTexte(890, 25 + yOffSet[1], getTxt(phases, phase, 0, 1)) if indexDecor == 2: afficheTexte(1165, 25 + yOffSet[2], getTxt(phases, phase, 0, 2)) elif phase == 1: yOffSet[indexDecor] = random.randint(-5, 5) afficheImage((SCREEN_W - 1050) / 2, 285 + random.randint(-25, 25) * amplitude, phase, 1.0, indexDecor, indexImg[phase - 1]) afficheTexte(740, 220 + 25, 'CHOISIS UNE AMBIANCE MYSTIQUE', size=0.75) render.set_blend_mode2d(1) afficheImageNot(600, 50, 1, '@data/choix_ambiance.png') render.set_blend_mode2d(0) # print(indexImg) if indexDecor == 0: afficheTexte(600, 25 + yOffSet[0], getTxt(phases, phase, indexImg[phase - 1], indexDecor), size=0.75) if indexDecor == 1: afficheTexte(840, 25 + yOffSet[1], getTxt(phases, phase, indexImg[phase - 1], indexDecor), size=0.75) if indexDecor == 2: afficheTexte(1050, 25 + yOffSet[2], getTxt(phases, phase, indexImg[phase - 1], indexDecor), size=0.75) else: yOffSet[indexDecor] = random.randint(-5, 5) afficheImage((SCREEN_W - 1050) / 2, 285 + random.randint(-25, 25) * amplitude, phase, 1.0, indexDecor, indexImg[phase - 1]) afficheTexte(700, 220 + 25, 'CHOISIS UN TRUC A OBSERVER', size=0.85) render.set_blend_mode2d(1) afficheImageNot(600, 50, 1, '@data/choix_paysage.png') render.set_blend_mode2d(0) if indexDecor == 0: afficheTexte(670, 25 + yOffSet[0], getTxt(phases, phase, indexImg[phase - 1], indexDecor)) if indexDecor == 1: afficheTexte(900, 25 + yOffSet[1], getTxt(phases, phase, indexImg[phase - 1], indexDecor)) if indexDecor == 2: afficheTexte(1180, 25 + yOffSet[2], getTxt(phases, phase, indexImg[phase - 1], indexDecor)) if input.key_press(gs.InputDevice.KeyEnter): gourou_index_list.append(indexDecor) entrer = True indexEntrer = indexDecor if phase == 0: Gourou.append(getTxt(phases, phase, 0, indexDecor)) else: Gourou.append(getTxt(phases, phase, indexImg[phase - 1], indexDecor)) if entrer: indexImg[phase] = indexEntrer # if phase > 0: # for index in range(len(indexImg)): # if index != 2: # render.set_blend_mode2d(1) # afficheImage(100+(600*(index)), 400, index , 0.6, indexImg[index]) # render.set_blend_mode2d(0) # else: # render.set_blend_mode2d(1) # afficheImage(450, 100, index , 0.6, indexImg[index]) # render.set_blend_mode2d(0) render.flip() render.flip() # prochaine phase, on joue un son de "selection" joue_sfx_selection() return Gourou, gourou_index_list
def gameMainLoop(mouse_device): # Update the ball motion ball.update(dt) # Update the player motion player.setMouse( mouse_device.GetValue(gs.InputDevice.InputAxisX) / SCR_DISP_WIDTH, mouse_device.GetValue(gs.InputDevice.InputAxisY) / SCR_DISP_HEIGHT) player.update(dt) # Update the AI ai.updateGameData(ball.pos_x, ball.pos_z, board.board_width, board.board_length) ai.update(dt) # Collisions if ball.velocity_z > 0.0: if (not ballIsBehindRacket(ball, player)) and (BallWasWithinXReach( ball, player) or BallIsWithinXReach(ball, player)): ball.setPosition( ball.pos_x, player.pos_z - ball.velocity_z * dt + min(0.0, player.velocity_z) * dt) player.setPosition(player.pos_x, ball.pos_z + player.length) ball.bounceZ() # Compute 3D/2D projections ball_2d_x, ball_2d_y, ball_2d_scale = project3DTo2D( ball.pos_x, ball.pos_z, board.board_width, board.board_length) ball_2d_x *= SCR_SCALE_FACTOR ball_2d_y = SCR_DISP_HEIGHT - (ball_2d_y * SCR_SCALE_FACTOR) player_2d_x, player_2d_y, player_2d_scale = project3DTo2D( player.pos_x, player.pos_z, board.board_width, board.board_length) player_2d_x *= SCR_SCALE_FACTOR player_2d_y = SCR_DISP_HEIGHT - (player_2d_y * SCR_SCALE_FACTOR) ai_2d_x, ai_2d_y, ai_2d_scale = project3DTo2D(ai.pos_x, ai.pos_z, board.board_width, board.board_length) ai_2d_x *= SCR_SCALE_FACTOR ai_2d_y = SCR_DISP_HEIGHT - (ai_2d_y * SCR_SCALE_FACTOR) render.clear() render.set_blend_mode2d(render.BlendAlpha) # Opponent render.sprite2d(SCR_MARGIN_X + (320 * 0.5) * SCR_SCALE_FACTOR, (SCR_PHYSIC_HEIGHT - 96 * 0.5) * SCR_SCALE_FACTOR, 106 * SCR_SCALE_FACTOR, "@assets/robot5.png") # Game board render.image2d(SCR_MARGIN_X, 0, SCR_SCALE_FACTOR, "@assets/game_board.png") # Score panel render.image2d(SCR_MARGIN_X, SCR_DISP_HEIGHT - (32 * SCR_SCALE_FACTOR), SCR_SCALE_FACTOR, "@assets/game_score_panel.png") # Render moving items according to their Z position renderAI(ai_2d_x, ai_2d_y, ai_2d_scale) if ball.pos_z - ball.radius < player.pos_z + player.length: renderBall(ball_2d_x, ball_2d_y, ball_2d_scale) renderPlayer(player_2d_x, player_2d_y, player_2d_scale) else: renderPlayer(player_2d_x, player_2d_y, player_2d_scale) renderBall(ball_2d_x, ball_2d_y, ball_2d_scale) render.set_blend_mode2d(render.BlendOpaque)
app_path = os.path.dirname(sys.executable) else: app_path = os.path.dirname(os.path.realpath(__file__)) # gs.plus.create_workers() gs.LoadPlugins(gs.get_default_plugins_path()) render.init(1280, 720, os.path.normcase(os.path.realpath(os.path.join(app_path, "pkg.core")))) gs.MountFileDriver(gs.StdFileDriver("assets"), '@assets') audio.init() # provide access to the assets folder data_path = os.path.normcase(os.path.realpath(app_path)) gs.GetFilesystem().Mount(gs.StdFileDriver(data_path)) render.set_blend_mode2d(render.BlendAlpha) globals.current_scene.setup() def fade_between_scene(): global state, fade_percent if globals.prev_scene_fade != globals.current_scene: globals.current_scene.exit() # transition to the new scene state = state_fade_in # launch the fade in if state == state_fade_in: fade_percent += fade_speed * globals.dt_sec if fade_percent > 1: fade_percent = 1