コード例 #1
0
ファイル: dropshadow.py プロジェクト: einarf/wasabi2d
"""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()
コード例 #2
0
    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')
コード例 #3
0
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)
コード例 #4
0
ファイル: pixel.py プロジェクト: lordmauve/wasabi2d
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()
コード例 #5
0
ファイル: main.py プロジェクト: Grimmys/colorsHiddenInTheSnow
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
コード例 #6
0
ファイル: lander.py プロジェクト: einarf/wasabi2d
"""
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
コード例 #7
0
ファイル: breakout.py プロジェクト: tjguk/wasabi2d
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,
コード例 #8
0
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)
コード例 #9
0
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
コード例 #10
0
ファイル: tile_edit.py プロジェクト: larryhastings/lardyarn
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):
コード例 #11
0
ファイル: lander.py プロジェクト: tjguk/wasabi2d
"""
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
コード例 #12
0
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))
コード例 #13
0
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()
コード例 #14
0
ファイル: punch.py プロジェクト: einarf/wasabi2d
"""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()
コード例 #15
0
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'
コード例 #16
0
ファイル: memory.py プロジェクト: tjguk/wasabi2d
#       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)
コード例 #17
0
ファイル: trails.py プロジェクト: tjguk/wasabi2d
"""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()