"""Example of the punch effect.""" import math from wasabi2d import run, Scene, event, keys scene = Scene() scene.background = (1, 1, 1) logo = scene.layers[0].add_sprite( 'wasabi2d', pos=(scene.width / 2, scene.height / 2), ) effect = scene.layers[0].set_effect( 'dropshadow', radius=10, opacity=0.5 ) @event def update(t): phase = math.sin(t) ** 2 effect.radius = 20 * phase effect.offset = (20 * phase + 2,) * 2 @event def on_key_down(key, mod): if key == keys.F12: scene.screenshot()
def __init__(self): self.scene = Scene(title='Cast Away!', icon='logo', width=800, height=600) self.scene.background = 0.9, 0.9, 1.0 self.activity = None self.fade_layer = self.scene.layers[30] self.info_layer1 = self.scene.layers[31] self.info_layer2 = self.scene.layers[32] self.missile_mask = self.scene.layers[40] self.action_layers = chain.LayerRange(stop=5) self.fade_layers = chain.Layers([30]) self.info_layers = chain.Layers([31, 32]) self.island_layers = [ chain.Layers([6]), chain.Mask( paint=chain.Fill((0, 0, .2, .5)), mask=chain.Layers([7]), function='inside', ), chain.LayerRange(start=8, stop=11), ] self.info_node = InfoNode(self.info_layers) self.input_locked = False self.island = None self.info = Info(self, self.info_layer1, self.info_layer2) self.island = Island(self) self.scene.chain = [ self.action_layers, self.info_node, ] self.info_layer1.set_effect('dropshadow', radius=3, offset=(0, 0), opacity=3) self.fade_circ = self.fade_layer.add_sprite( 'blur_circle', scale=hypot(self.scene.width, self.scene.height) // 2 / 50, pos=(self.scene.width // 2, self.scene.height * 0.55), ) self.fade_rect = self.fade_layer.add_rect( self.scene.width * 3, self.scene.height * 3, color=(0, 0, 0, 0), ) self.storage = Storage('mufl_castaway.json') self.storage.load() self.info.load(self.storage) if self.info.food > 0: self.return_to_island() set_music('main') else: self.go_do(None, from_island=False) set_music('intro')
import math from wasabi2d import Scene, run, event from random import uniform as fraction from random import randint as integer from random import choice scene = Scene(1300, 800) scene.background = 'black' photo = scene.layers[0].add_sprite( 'diwali', pos=(scene.width / 2, scene.height / 2), ) screen = scene.layers[0] screen.set_effect('bloom', radius=50, intensity=0.9) items = [] words = ['Happy', ' Diwali', ' '] W = scene.width H = scene.height @event def on_mouse_move(pos, rel): dx, dy = rel r = math.sqrt((dx**4) + (dy**4)) pos = (integer(0, W), integer(0, H)) c = screen.add_circle(radius=r, pos=pos, color=random_color()) items.append(c)
from wasabi2d import Scene, run scene = Scene(50, 50, background="#ccaa88", pixel_art=False, scaler='nearest') center = (25, 25) scene.layers[0].add_sprite( 'pixel_tank_base', pos=center, angle=0.4, ) scene.layers[0].add_sprite( 'pixel_tank_turret', pos=center, angle=-0.1, ) run()
from wasabi2d import run, Scene, event, keys from settings import SNOWMAN_SPEED from src.scenes.level import Level from src.scenes.main_menu import MainMenu from src.constants import SCREEN_WIDTH, SCREEN_HEIGHT, GAME_TITLE if __name__ == "__main__": scene = Scene(SCREEN_WIDTH, SCREEN_HEIGHT, GAME_TITLE, rootdir='.', icon='snowman_down_0') main_menu = MainMenu(scene, True) level = Level(scene, False) main_menu.load() @event def on_key_up(key): if key == keys.RETURN: if main_menu.is_active: main_menu.deactivate() level.load() if key == keys.R and level.is_active: level.load() if key == keys.ESCAPE: exit() @event def update(dt, keyboard): speed = SNOWMAN_SPEED
""" import random import math from wasabi2d import Scene, event, run, clock, keys, Vector2 WIDTH = 1600 # Screen width HEIGHT = 1200 # Screen height # Landscape is broken down into steps. Define number of pixels on the x axis # per step. STEP_SIZE = 12 scene = Scene( WIDTH, HEIGHT, antialias=4, title="Lunar Lander", ) class LandingSpot: """A flat pad where it is safe for the player to land. Each instance defines a landing spot by where it starts, how big it is and how many points it's worth. """ landing_spot_sizes = ["small", "medium", "large"] def __init__(self, starting_step): self.starting = starting_step
import random import colorsys from collections import deque from math import copysign from wasabi2d import event, run, Scene, animate from wasabi2d.actor import Actor import pygame.mouse WIDTH = 600 HEIGHT = 800 scene = Scene(WIDTH, HEIGHT) pygame.mouse.set_visible(False) BALL_SIZE = 6 MARGIN = 50 BRICKS_X = 10 BRICKS_Y = 5 BRICK_W = (WIDTH - 2 * MARGIN) / BRICKS_X BRICK_H = 25 ball = Actor( scene.layers[1].add_circle( radius=BALL_SIZE, color='#cccccc', ), pos=(WIDTH / 2, HEIGHT / 2), ) scene.layers[1].set_effect('trails', fade=0.2) bat = Actor(scene.layers[0].add_rect( width=120,
import math from wasabi2d import Scene, run, event from random import uniform as fraction from random import randint as integer from random import choice scene = Scene(800,600) scene.background = 'red' photo = scene.layers[0].add_sprite( 'diwali.png', pos=(scene.width / 2, scene.height / 2), ) screen = scene.layers[1] screen.set_effect('bloom', radius=60, intensity=1.2) items = [] words = [ 'Happy',' Diwali',] W = scene.width H = scene.height @event def on_mouse_move(pos, rel): dx, dy = rel r = math.sqrt( (dx**4)+(dy**4) ) pos=(integer(0, W), integer(0, H)) c = screen.add_circle( radius=r, pos=pos, color=random_color() ) items.append(c)
import random from wasabi2d import Scene, run, event, Storage, Vector2 from wasabi2d.actor import Actor scene = Scene( width=400, height=708, title='Flappy Bird', ) storage = Storage() storage.setdefault('highscore', 0) # These constants control the difficulty of the game GAP = 130 GRAVITY = 0.3 FLAP_STRENGTH = 6.5 SPEED = 3 score_label = scene.layers[5].add_label( "0", color='white', pos=(scene.width / 2, 80), align='center', fontsize=70, ) class Score: _score = 0 @property
import sys import numpy as np import atexit import json from wasabi2d import Scene, event, run, keys, Vector2, mouse from ascend.triangle_intersect import polygon_collision from pygame import joystick, Rect from scipy.spatial import ConvexHull file = sys.argv[1] datafile = f'ascend/walldata/{file}-walls.json' scene = Scene(rootdir='ascend', width=350, height=720) scene.background = (0.2, ) * 3 for suffix in ('-floor', '-wall'): scene.layers[-1].add_sprite(file + suffix, pos=(scene.width / 2, scene.height / 2)) scene.layers[0].set_effect('dropshadow', radius=1) def convex_hull(points): return points[ConvexHull(points).vertices].copy() class Poly: def __init__(self): self.points = np.zeros((0, 2)) self.handles = [] self.shape = None def add_point(self, pos):
""" import random import math from wasabi2d import Scene, event, run, clock, keys, Vector2 WIDTH = 1600 # Screen width HEIGHT = 1200 # Screen height # Landscape is broken down into steps. Define number of pixels on the x axis # per step. STEP_SIZE = 12 scene = Scene( WIDTH, HEIGHT, title="Lunar Lander", ) class LandingSpot: """A flat pad where it is safe for the player to land. Each instance defines a landing spot by where it starts, how big it is and how many points it's worth. """ landing_spot_sizes = ["small", "medium", "large"] def __init__(self, starting_step): self.starting = starting_step
import math from wasabi2d import Scene, run, event from random import uniform as fraction from random import randint as integer from random import choice scene = Scene(1300, 800) scene.background = 'white' photo = scene.layers[0].add_sprite( 'dony stark', color='purple', pos=(scene.width / 2, scene.height / 2), ) photo.scale = min(scene.width / photo.width, scene.height / photo.height) screen = scene.layers[0] screen.set_effect('bloom', radius=50, intensity=0.9) items = [] words = ['Happy', 'Birthday ', 'IronMan', 'Love You 3000'] W = scene.width H = scene.height @event def on_mouse_move(pos, rel): dx, dy = rel r = math.sqrt((dx**4) + (dy**4)) pos = (integer(0, W), integer(0, H))
from wasabi2d import Scene, event, run, keys, Vector2 from ascend.triangle_intersect import polygon_collision from pygame import joystick scene = Scene() scene.background = (0.2, ) * 3 scene.layers[0].set_effect('dropshadow', radius=1) triangle = [Vector2(100, 200), Vector2(300, 300), Vector2(200, 400)] scene.layers[0].add_polygon(triangle, fill=False, color='yellow') circ = scene.layers[0].add_circle(radius=20, fill=False, color='red') @event def on_mouse_move(pos): circ.pos = pos pen = polygon_collision(triangle, pos, circ.radius) if pen: circ.pos -= pen circ.color = 'red' if pen else 'green' run()
"""Example of the punch effect.""" import math from wasabi2d import run, Scene, event, keys scene = Scene() logo = scene.layers[0].add_sprite( 'wasabi2d', pos=(scene.width / 2, scene.height / 2), ) effect = scene.layers[0].set_effect('punch', factor=2.0) @event def update(t): effect.factor = 0.5 + math.sin(t)**2 @event def on_key_down(key, mod): if key == keys.F12: scene.screenshot() run()
import math from wasabi2d import event, run, sounds, Scene, Vector2, clock, animate import pygame scene = Scene(antialias=8) scene.background = (0, 0.03, 0.1) ship = scene.layers[2].add_sprite('ship', pos=(scene.width / 2, scene.height / 2)) circ = scene.layers[0].add_circle( radius=30, pos=(100, 100), color='cyan', fill=False, stroke_width=3.0, ) star = scene.layers[0].add_star(points=6, inner_radius=30, outer_radius=60, pos=(400, 100), color='yellow') scene.layers[0].add_circle( radius=60, pos=(480, 120), color='#ff000088', ) lbl = scene.layers[0].add_label("Time: 0s", font='bubblegum_sans', pos=(scene.width * 0.5, 560), align='right') lbl.color = 'yellow'
# either hit or miss is reported. # Consider re-casting the data structure as a dict # with two-element tuple keys. # Configure window size according to COLS and ROWS # from wasabi2d import animate, clock, event, mouse, run, Scene from wasabi2d.actor import Actor from wasabi2d.tone import play from functools import partial import random import time scene = Scene( width=800, height=600, title='Memory', ) scene.background = (.7, .7, .7) scene.layers[1].set_effect('dropshadow', opacity=2) COLS = 4 ROWS = 3 IMSIZE = 200 STATUS = [] # cells that have been clicked on ignore = [] # cells that have been matches and are no longer in play # Create two of each card image, then randomize before creating the board START_IMAGES = ["im" + str(i + 1) for i in range(COLS * ROWS // 2)] * 2 random.shuffle(START_IMAGES)
"""Example of the light bloom effect.""" from wasabi2d import run, Scene, event, Vector2 from wasabi2d.actor import Actor scene = Scene() scene.background = 'red' logo = Actor(scene.layers[0].add_sprite( 'wasabi2d', pos=(scene.width / 2, scene.height / 2), )) logo.v = Vector2(1, -1) scene.layers[0].set_effect('trails', fade=0.7) @event def update(dt): logo.pos += logo.v if logo.top < 0 or logo.bottom >= scene.height: logo.v.y *= -1 if logo.left < 0 or logo.right >= scene.width: logo.v.x *= -1 run()