Game Board: Enabling Simple Games in TouchDevelop

Size: px
Start display at page:

Download "Game Board: Enabling Simple Games in TouchDevelop"

Transcription

1 Game Board: Enabling Simple Games in TouchDevelop Manuel Fähndrich Microsoft Research One Microsoft Way, Redmond WA 98052, USA February 23, 2012 Abstract TouchDevelop is a novel application creation environment for anyone to script their smartphones anywhere you do not need a separate PC. TouchDevelop allows you to develop mobile device applications that can access your data, your media, your sensors and allows using cloud services including storage, computing, and social networks. TouchDevelop targets students, and hobbyists, not necessarily the professional developer. Typical TouchDevelop applications are written for fun, or for personalizing the phone. Starting with version 1.2 of TouchDevelop, we include a game board API for writing simple spritebased games. The API includes a primitive physics engine to simplify common game loops where objects have speed and experience gravity and friction. Game board elements can be orchestrated using events based on touch and regular timing intervals. This report describes the game board API and the simple physics engine behind it. 1 Introduction TouchDevelop [1] is a novel application creation environment for anyone to script their smartphones anywhere you do not need a separate PC. TouchDevelop allows you to develop mobile device applications that can access your data, your media, your sensors and allows using cloud services including storage, computing, and social networks. TouchDevelop targets students, and hobbyists, not necessarily the professional developer. Typical TouchDevelop applications are written for fun, or for personalizing the phone. TouchDevelop is available for free on the Windows Phone 7 marketplace. Enabling people to write simple games is a big draw of TouchDevelop. However, without some built-in support for creating, moving, and animating objects on a game board, the amount of code and data a script will have to deal with quickly becomes unmanageable. To enable simple games with a manageable amount of code, TouchDevelop includes the board and sprite APIs for writing simple sprite-based games. The board implementation includes a primitive physics engine to simplify common game loops where objects have speed and experience gravity and friction. Additionally, the API provides simple touch input functions for scripts. 2 Coordinates and Units Positions in the game board API are based on pixels. The origin of the grid is the top left corner when holding the phone upgright, the x-axis is horizontal, the y-access vertical. Sprite positions refer to the center of the sprite, i.e., the half-way point of its width and height before any rotation is applied. The reasoning behind this choice is so that sprites rotate around their center. In the future we may provide more control for offsetting sprites from their position. Speed and acceleration are measured in pixels second and 1 pixels second 2.

2 3 The Board API 3.1 Creating a Board To create a board, use the media create board property and bind the result to a variable: The numeric parameter is the height of the board in pixels. 640 is the maximum height given the current layout of TouchDevelop s user interface. Once created, the board dimensions can be retrieved via board width and board height. Often, you want the board to take up the entire screen of your device. For that purpose, there s an alternative way to create the board using media create full board. When you post a full board to the wall, it will take up the entire display. board := media create full board 3.2 Displaying a Board A board remains invisible until you post it to the wall. Once posted, updates to the board state and the sprites on the board become visible only when calling board update on wall. In general, the code for a game loop looks something like this: data... create sprites... data board post to wall event gameloop()... move objects around... board update on wall 3.3 Visual Properties of a Board A board has a background color and a background picture that can be set individually. The default background color is transparent and so is the default background picture. board set background(colors green) board post to wall The above example sets the board background to green. The example below let s the user pick a picture from the picture library and uses that to fill the background of the board pic := media choose picture board set background picture(pic) board post to wall Setting both the background color and the background image will show only the background image. 3.4 Creating Sprites There are four different kinds of sprites that can be created based on their visual contents: board create ellipse creates an elliptic sprite, good for balls and ufos board create rectangle creates a rectangular sprite 2

3 board create text creates a text sprite that simply displays a piece of updatable text at a particular position of the board. board create picture creates a sprite from a picture, using the picture content and dimension. In the future, we may separate the content from the sprite itself so as to make it easier to change the sprite content. Sprites have an initial position centered on the board and no speed or angular rotation. Such properties can be set on the sprite using the sprite API. ball := board create ellipse(20,20) board post to wall The above code creates a single circular sprite with width and height equal to 20 pixels. displayed in the middle of the board as this is the starting board position. Setting the color, position, and speed of sprites is done via the sprite API (Section 4). The sprite is 3.5 Enumerating over Sprites A foreach loop can be used to enumerate all sprites on a board: foreach sprite in board do... The number of sprites on a board is returned by board count and any particular sprite can be retrieved by an index between 0 and board count using board at(i). 3.6 Sprite Collections During games it is very useful to have several collections of sprites, e.g., the missiles currently flying, the bullets from the space ship, the enemies, etc. To make this management of sprite collections easy, use board create sprite set. Operations to add and remove sprites from sprite sets are exposed on sprite set API (Section 5). 3.7 Creating Obstacles Obstacles are currently just walls that can be added to the board. Walls cannot be moved once created. board create obstacle(100,100,50,50,1) board post to wall The code above creates a wall (a single line) at position 100, 100 on the screen and extending diagonally for 50 pixels in both the x and y direction. The last parameter of a wall is its elasticity. It is used to determine how much of the impulse a moving sprite retains when reflecting off the wall. An elasticity of 1 means the entire impulse is maintained, whereas 0 means full abosorption of the impulse (a sprite will stick to the wall). 3.8 Board Boundary By default, the board is open, meaning it has no boundary. Objects moving off the visual part of the board will simply continue moving away. Since it is common to need reflecting walls around the board, the create boundary(distance) property can be used to create a reflective set of walls around the board at the given distance. 3

4 3.9 Gravity We can set an acceleration vector on the board that will apply to all sprites. For instance, we can use the accelerometer reading from the phone to set the board acceleration, thereby creating the illusion that the objects are affected by earth s gravity: p := senses acceleration quick scale(1000) board set gravity(p x, p y) If you have sprites that you don t want to be affected by gravity, set their friction to Animation Once sprites are given speeds or we have acceleration, the board engine can update a sprite s position. To update all sprite animtations for one time step, use the board evolve property. A time step is simply the time since the last call to board evolve or the creation of the board. We now have enough parts to create our first simple moving sprite script: board create boundary(0) board create obstacle(100,100,50,50,1) ball := board create ellipse(20,20) board post to wall while true do p := senses acceleration quick scale(1000) board set gravity(p x, p y) board evolve board update on board The script above creates a board and adds a reflective wall around the entire board. It then creates a small obstacle wall and a single circular sprite. Within the game loop, we read the accelerometer and use its readings to set the gravity on the game board in pixels. To make the ball accelerate more quicly, we scale seconds 2 the acceleration by a factor of This simple script works, but an explicit loop like above is not the best way to handle animations. The next section shows how to use the game loop event instead The Game Loop Although an explicit game loop as shown in the previous section can be used for quick testing of an animation, it is better to use the gameloop event for code that should run at regular intervals. In order to access the board from the gameloop event, store your board into a data variable (e.g., using the promote to data refactoring that shows up when you select a local variable). Add the gameloop event in the event section of your script. Events contain code like normal actions, but they are invoked when an event triggers. The gameloop event is triggered roughly every 50 milliseconds. With the gameloop, the animation code from the previous section now looks as follows: data data board create boundary(0) data board create obstacle(100,100,50,50,1) ball := data board create ellipse(20,20) data board post to wall event gameloop() p := senses acceleration quick scale(1000) board set gravity(p x, p y) board evolve board update on board 4

5 3.12 Friction In the animation from the previous section, you may notice that the ball keeps on moving without slowing down. That s because we have given the board nor the ball any friction. Each sprite can have its own friction setting, but if not set each sprite experiences the default friction from the board. A friction is the fraction of the forward speed that is experienced as a backwards force. A friction of 0 corresponds to no friction at all, and a friction of 1 means the sprite will not move at all. We can add a bit of friction to the board in the previous animation using: board set friction(0.01) Springs and Anchors A spring can be added between two sprites in order to create an acceleration towards each other. Without friction to dissipate energy over time, sprites linked by a spring will oscillate indefinitely. With friction, they will eventually converge on the same point. A common scenario is to fix one of the two spring-linked sprites on the board (make it unmovable). Sprites with friction set to 1.0 are unmoved by acceleration. Even though you can create any sprite and set its friction to 1.0, the board API contains a create anchor property that creates an invisible sprite with friction set to 1.0. A sprite linked to an anchor via a spring therefore oscillates around the anchor. If you give the sprite an initial velocity vector perpendicular to the direction of the spring, the sprite will circle around the anchor. With multiple anchors and springs, you can create some interesting oscilation paths. The API for creating a spring takes a stiffness parameter. Think of this parameter as a factor of how hard the spring pulls objects together. data board := media create board sprite := data board create ellipse(20,20) anchor := data board create anchor(10,10) sprite move(20,0) data board create spring(sprite, anchor, 100) sprite set speed y(20) data board post to wall event gameloop() board evolve board update on wall The code above produces a sprite that will circle the center of the board Touch Input Another nice aspect of the board API is that it provides touch input state to your script. You can test if the user touches the board using board touched and obtain the beginning coordinate of a gesture (board touch start), the current coordinate (board touch current), and the coordinate where the finger was lifted off the screen (board touch end). In addition, the final velocity of the finger movement is obtained by board touch velocity. These properties can be used to add more balls to our little animation from the previous section. The best way to make use of touch input is via touch events. See Section 6 on events for more information. 5

6 3.15 Debugging Sprites To make it a bit simpler to debug sprite position and speed related problems in your scripts, you can turn on a debug mode on the board: board set debug mode(true) If debug mode is on, the board will display the position and speed of a sprite next to the sprite content. Additionally, the width and height is displayed as a box around the sprite. Also, in debug mode, even invisible sprites are displayed. This can be useful to find forgotten sprites or where anchors are placed. 4 The Sprite API Sprites are movable objects that you can use to visually represent parts of a game, such as your space ship, a bullet, a monster, etc. You create new sprites through the board API. Once you have a sprite, you can change its position, speed, etc, through the sprite API. 4.1 Position and Speed Position and speed can be set via a number of properties on sprites, either by setting individual x and y coordinates, or by setting both at once. Set the sprite position to (newx,newy) sprite set x(newx) sprite set y(newy) Another way to set sprite position to (newx,newy) sprite set pos(newx, newy) Set sprite speed to (vx, vy) sprite set speed x(vx) sprite set speed y(vy) Another way to set speed to (vx,vy) sprite set speed(vx, vy) The current position of a sprite is obtained by sprite x and sprite y. The speed is obtained via sprite speed x and sprite speed y. 4.2 Rotation You can set the angle of rotation of a sprite via sprite set angle(degrees). If you want the sprite to rotate continuously, set the angular speed to degrees sec via sprite set angular speed(dps). The current angle and angular speed is read by sprite angle and sprite angular speed. 4.3 Friction By default, sprites use the friction of the underlying board. However, you can change each sprite s friction individually through sprite set friction(f). A friction of 0.0 means no friction at all, and 1.0 means the object is unmovable by acceleration. The current friction can be read via sprite friction. 4.4 Width and Height Sprites always obtain a width and height when created. It can be read via sprite width and sprite height. You can change the width and height of an existing sprite via sprite set width and sprite set height. For text sprites, the width and height only determine the positioning and bounding box. The text size itself is solely determined by the font size used when the text sprite is created. 6

7 4.5 Color The sprite s color can be set via sprite set color(c). For picture sprites, the color setting has no effect. 4.6 Text Content For text sprites, you can change the content of the sprite by using sprite set text(new text). For non-text sprites, setting the text has no effect. The current text of a text sprite can be obtained by sprite text. 4.7 Elasticity When a sprite collides with a wall (obstacle), the amount of energy preserved depends on the product of the sprite s and the wall s elasticity. If the product is 1.0, then the reflection is fully elastic and no energy is lost. If the product is 0.0, then the collision absorbs all energy and the sprite will effectively stick to the wall. Values between 0 1 will dampen the velocity of sprites upon each reflection. By default the elasticity of a sprite is 1.0, i.e., fully elastic. 4.8 Visibility After creation, a sprite is by default visible (unless it is an anchor). To change the sprite visibility, use sprite hide and sprite show. The current visibility can be queried using sprite is visible. 4.9 Helper Functions A few properties on sprites provide functionality you could implement in a script itself, but it is so common that we preferred to provide it on the sprite API directly. sprite move(deltax, deltay) is equivalent to sprite set pos(sprite x + deltax, sprite y + deltay) sprite move towards(other, fraction) is equivalent to sprite set pos(sprite x + (other x sprite x) fraction, sprite y + (other y sprite y) fraction) Finally, sprite speed towards(other, magnitude) puts sprite on a trajectory towards the other sprite with a speed vector of the given magnitude Determining Overlap Two functions provide overlap tests between sprites. sprite overlaps with(other) returns a boolean that is true if the two sprites overlap. The overlap is determined solely by position and the relative width and height. It does not take into account the rotation of the sprites. A more general overlap test is provided by sprite overlap with(sprite set) which returns a subset of sprites from sprite set that overlaps with the given sprite. This allows testing for overlap with a large number of sprites at once. 5 The Sprite Collection API When writing simple games with multiple objects of the same kind (e.g. multiple shots, missiles, etc), it quickly becomes necessary to group related sprites into collections. The board API provides a way to create sprite sets via board create sprite set. A sprite set represents a collection of sprites. You can add and remove sprites from the set, enumerate over the sprites in a set using foreach, test if a sprite is in a given set etc. One common use of sprite sets is to use them to keep track of the state of a sprite. E.g., you might have a number of shots that can be fired from a space ship. If the shots are not active, you could keep 7

8 them in a sprite set called inactive shots. As a shot is fired, you remove a shot from the inactive shots via shot := inactive shots remove first, set its position and speed, and add it to another set of active shots via active shots add(shot). This way, you can easily keep track of active and inactive shots, so that no new shots can be fired unless you have inactive shots, comparing only active shots for overlap with targets, etc. 6 Events Events are actions that are automatically invoked when certain events occur. The board, has six specific kinds of events which we detail in the next sections. 6.1 Gameloop Event A typical outline for a script that uses the board looks as follows: data board := media create full board // create sprites, sprite sets, obstacles, and springs //... data board post to wall event gameloop() // test and react to overlaps (collisions) etc. //.. board evolve board update on wall The gameloop event is where you put code that needs to run regularly (every 50ms). You would put collision detection code there, as well as things that should happen after a certain time, or when a certain position is reached. Make sure you don t spend too much time in the game loop. Avoid code that take a long time to run, otherwise, the gameloop will not run every 50ms and your animations will stutter. To react to touch inputs, use the events in the following sections. 6.2 Tap board Event This event fires if you tap anywhere on the board (unless there is a sprite where you tap). Tapping means that your finger leaves the screen at approximately the same position where it first touched (as opposed to swiping). The event fires once the finger is lifted. For an example on how to use this event, the code below creates a new ball where you tap the board. data board := media create full board data board create boundary(0) data board post to wall event gameloop() var p := senses acceleration quick scale(100) board set gravity(p x, p y) board evolve board update on board event tap board: board(x,y) var sprite := data board create ellipse(10,10) sprite set pos(x,y) 8

9 As you can see, the tap board event has two parameters x and y that tell you the position where the tap occurred. 6.3 Swipe board Event To give the balls some initial speed, we can write an event that triggers when you swipe your finger on the board, i.e, you lift it off some distance away from the original starting point. To the code in the previous section, we add the following event: event swipe board: board(x,y,delta x, delta y) var sprite := data board create ellipse(10,10) sprite set pos(x,y) sprite set speed(delta x, delta y) In addition to the original position where the swipe started, the swipe event is also passed the delta, that is the difference of the end and start position of the swipe. We can use this to give the new sprite some initial speed. 6.4 Tap sprite Event Your code can also respond to taps on specific sprites. In order to control which events respond to which sprites, we use sprite sets. All sprite events are associated with a sprite set that you need to declare in the data section. Once you have such a sprite set, you can add sprites to the set and your code can respond to events on sprites in that set 1. Let s augment the previous sample to change the color of a sprite whenever you tap it. In the main function, we define a sprite set all sprites that holds all our sprites, and in the tap and swipe events, we add the new sprites to this set.... data all sprites := data board create sprite set event tap board: board(x,y)... data all sprites add(sprite) event swipe board: board(x,y,delta x, delta y)... data all sprites add(sprite) Now we add a tap handler for the sprite set all sprites. The event parameters include the sprite that was tapped, the index of this sprite within the sprite set, and the board position of the tap. We change the color of the tapped sprite to a random color. event tap sprite in all sprites(sprite, index, x, y) sprite set color(colors random) Now tapping on a sprite changes its color randomly. 6.5 Swipe sprite Event Suppose we want to change the direction and speed of an existing sprite. We can use the swipe sprite event for this purpose. It triggers when a sprite is not tapped, but swiped, i.e., the position where you lift the finger is different from the original position where you touched the screen. We use the same sprite set we already have to hook into this event: 1 Yes, sprites can appear in multiple sets at once and all events for that sprite will trigger. 9

10 event swipe sprite in all sprites(sprite, index, x, y, delta x, delta y) sprite set speed(delta x, delta y) 6.6 Drag sprite Event The last event on sprites is the drag event. It fires during dragging and gives you the current position and current drag amount. We can use this event to temporarily set the speed of the dragged sprite to 0 and to display it at the current drag position: event drag sprite in all sprites(sprite, index, x, y, delta x, delta y) sprite set speed(0, 0) sprite set pos(x, y) This way, the sprite will appear under your finger while dragging and stay there. Once you lift your finger, the swipe event will fire and the sprite will be given the speed corresponding to your overall drag amount. 7 Physics Sprites are moved based on their speed and the acceleration from gravity or springs whenever the board evolve property is invoked in your script. The amount of movement depends on the time dt between successive calls to board evolve. The board API internally keeps track of time and moves objects according to dt. If the game loop runs slowly however, we cap the maximum time dt for a step to 0.1 seconds. 7.1 Position and Speed Integration Internally, the computation of new positions and speed uses the standard Runga-Kutta method for computing the integral of the current position and speed based on previous speed and acceleration. 7.2 Collision Response Currently, collision responses are only computed between walls and sprites, not between sprites themselves. So sprites can overlap and go through each other. However, sprites will bounce off of walls. The collision response when a sprite hits a wall depends on the orientation of the wall, the speed vector of the sprite, and the elasticity of the wall and sprite. The orientation (rotation) of the sprite is ignored. The only control over wall collision response currently available is the elasticity of the wall and the sprite. The resulting speed magnitude of the sprite after collision is the product of the incoming speed magnitude, the elasticity of the wall and the elasticity of the sprite. This approach doesn t really correspond to real physical properties of material, but makes it easy to model sticky walls and objects, as well as bouncy walls and objects. References [1] N. Tillmann, M. Moskal, J. de Halleux, and M. Fahndrich. TouchDevelop Programming Cloud- Connected Mobile Devices via Touchscreen. Technical Report MSR-TR , Microsoft Research, Apr

Erasmus+ Project: Yestermorrow Year 1 Maths: Pythagorean Theorem

Erasmus+ Project: Yestermorrow Year 1 Maths: Pythagorean Theorem Erasmus+ Project: Yestermorrow Year 1 Maths: Pythagorean Theorem Workshop (Coding Android Mobile Apps): Collision Detection and the Pythagorean Theorem (Based on the code.org worksheet) WORKSHOP OVERVIEW

More information

CHAPTER 1 WHAT IS TOUCHDEVELOP?

CHAPTER 1 WHAT IS TOUCHDEVELOP? CHAPTER 1 In this chapter we present an overview of how TouchDevelop works within your phone and the larger ecosystem the cloud, the communities you are involved in, and the websites you normally access.

More information

Understanding an App s Architecture

Understanding an App s Architecture Chapter 14 Understanding an App s Architecture This chapter examines the structure of an app from a programmer s perspective. It begins with the traditional analogy that an app is like a recipe and then

More information

Creating Breakout - Part 2

Creating Breakout - Part 2 Creating Breakout - Part 2 Adapted from Basic Projects: Game Maker by David Waller So the game works, it is a functioning game. It s not very challenging though, and it could use some more work to make

More information

ROSE-HULMAN INSTITUTE OF TECHNOLOGY

ROSE-HULMAN INSTITUTE OF TECHNOLOGY Introduction to Working Model Welcome to Working Model! What is Working Model? It's an advanced 2-dimensional motion simulation package with sophisticated editing capabilities. It allows you to build and

More information

AN INTRODUCTION TO SCRATCH (2) PROGRAMMING

AN INTRODUCTION TO SCRATCH (2) PROGRAMMING AN INTRODUCTION TO SCRATCH (2) PROGRAMMING Document Version 2 (04/10/2014) INTRODUCTION SCRATCH is a visual programming environment and language. It was launched by the MIT Media Lab in 2007 in an effort

More information

Pong in Unity a basic Intro

Pong in Unity a basic Intro This tutorial recreates the classic game Pong, for those unfamiliar with the game, shame on you what have you been doing, living under a rock?! Go google it. Go on. For those that now know the game, this

More information

1. Defining Procedures and Reusing Blocks

1. Defining Procedures and Reusing Blocks 1. Defining Procedures and Reusing Blocks 1.1 Eliminating Redundancy By creating a procedure, move a copy of the redundant blocks into it, and then call the procedure from the places containing the redundant

More information

Platform Games Drawing Sprites & Detecting Collisions

Platform Games Drawing Sprites & Detecting Collisions Platform Games Drawing Sprites & Detecting Collisions Computer Games Development David Cairns Contents Drawing Sprites Collision Detection Animation Loop Introduction 1 Background Image - Parallax Scrolling

More information

Chapter 19- Object Physics

Chapter 19- Object Physics Chapter 19- Object Physics Flowing water, fabric, things falling, and even a bouncing ball can be difficult to animate realistically using techniques we have already discussed. This is where Blender's

More information

Exploring Projectile Motion with Interactive Physics

Exploring Projectile Motion with Interactive Physics Purpose: The purpose of this lab will is to simulate a laboratory exercise using a program known as "Interactive Physics." Such simulations are becoming increasingly common, as they allow dynamic models

More information

Chapter 1. Getting to Know Illustrator

Chapter 1. Getting to Know Illustrator Chapter 1 Getting to Know Illustrator Exploring the Illustrator Workspace The arrangement of windows and panels that you see on your monitor is called the workspace. The Illustrator workspace features

More information

CHAPTER 6 ACTIONS, METHODS, REFACTORING

CHAPTER 6 ACTIONS, METHODS, REFACTORING VERSION 1 CHAPTER 6 In this chapter we cover ACTIONS in more depth and show how to easily create additional actions in a script by using a technique known as REFACTORING. The chapter covers two forms of

More information

Mobile Touch Floating Joysticks with Options version 1.1 (Unity Asset Store) by Kevin Blake

Mobile Touch Floating Joysticks with Options version 1.1 (Unity Asset Store) by Kevin Blake Mobile Touch Floating Joysticks with Options version 1.1 (Unity Asset Store) by Kevin Blake Change in version 1.1 of this document: only 2 changes to this document (the unity asset store item has not changed)

More information

Animations involving numbers

Animations involving numbers 136 Chapter 8 Animations involving numbers 8.1 Model and view The examples of Chapter 6 all compute the next picture in the animation from the previous picture. This turns out to be a rather restrictive

More information

ACS-1805 Introduction to Programming (with App Inventor)

ACS-1805 Introduction to Programming (with App Inventor) ACS-1805 Introduction to Programming (with App Inventor) Chapter 8 Creating Animated Apps 10/25/2018 1 What We Will Learn The methods for creating apps with simple animations objects that move Including

More information

Figure 2.1: High level diagram of system.

Figure 2.1: High level diagram of system. Basile and Choudhury 6.111 Final Project: La PC-na Project Proposal 1 Introduction The luxury of purchasing separate pool tables, foosball tables, and air hockey tables is beyond the budget of many, particularly

More information

Working with the BCC 2D Particles Filter

Working with the BCC 2D Particles Filter Working with the BCC 2D Particles Filter 2D Particles breaks the source image into particles and disperses them in 2D space. This Þlter also provides a variety of explosion, velocity, and gravity controls

More information

EEN118 LAB FOUR. h = v t ½ g t 2

EEN118 LAB FOUR. h = v t ½ g t 2 EEN118 LAB FOUR In this lab you will be performing a simulation of a physical system, shooting a projectile from a cannon and working out where it will land. Although this is not a very complicated physical

More information

8 Physics Simulations

8 Physics Simulations 8 Physics Simulations 8.1 Billiard-Game Physics 8.2 Game Physics Engines Literature: K. Besley et al.: Flash MX 2004 Games Most Wanted, Apress/Friends of ED 2004 (chapter 3 by Keith Peters) 1 Billiard-Game

More information

S3 Scratch Programming

S3 Scratch Programming LOREM ST LOUIS IPSUM DOLOR ST LOUIS SCHOOL S3 Computer Literacy S3 Scratch Programming Dominic Kwok CHAPTER 1 Scratch After studying this chapter, you will be able to create a simple Scratch program upload

More information

ROSE-HULMAN INSTITUTE OF TECHNOLOGY

ROSE-HULMAN INSTITUTE OF TECHNOLOGY More Working Model Today we are going to look at even more features of Working Model. Specifically, we are going to 1) Learn how to add ropes and rods. 2) Learn how to connect object using joints and slots.

More information

BONE CONTROLLER ASSET VERSION 0.1 REV 1

BONE CONTROLLER ASSET VERSION 0.1 REV 1 Foreword Thank you for purchasing the Bone Controller! I m an independent developer and your feedback and support really means a lot to me. Please don t ever hesitate to contact me if you have a question,

More information

Notes 3: Actionscript to control symbol locations

Notes 3: Actionscript to control symbol locations Notes 3: Actionscript to control symbol locations Okay, you now know enough actionscript to shoot yourself in the foot, especially if you don t use types. REMEMBER to always declare vars and specify data

More information

Asteroid Destroyer How it Works

Asteroid Destroyer How it Works Asteroid Destroyer How it Works This is a summary of some of the more advance coding associated with the Asteroid Destroyer Game. Many of the events with in the game are common sense other than the following

More information

Anjuli Kannan. Google Earth Driving Simulators (3:00-7:00)

Anjuli Kannan. Google Earth Driving Simulators (3:00-7:00) Google Earth Driving Simulators (3:00-7:00) An example of what you can do by learning the GoogleEarth API, once you know how to write code Google has published such an API so that people can make programs

More information

Better UI Makes ugui Better!

Better UI Makes ugui Better! Better UI Makes ugui Better! 2016 Thera Bytes UG Developed by Salomon Zwecker TABLE OF CONTENTS Better UI... 1 Better UI Elements... 4 1 Workflow: Make Better... 4 2 UI and Layout Elements Overview...

More information

Learning to use the drawing tools

Learning to use the drawing tools Create a blank slide This module was developed for Office 2000 and 2001, but although there are cosmetic changes in the appearance of some of the tools, the basic functionality is the same in Powerpoint

More information

UI Elements. If you are not working in 2D mode, you need to change the texture type to Sprite (2D and UI)

UI Elements. If you are not working in 2D mode, you need to change the texture type to Sprite (2D and UI) UI Elements 1 2D Sprites If you are not working in 2D mode, you need to change the texture type to Sprite (2D and UI) Change Sprite Mode based on how many images are contained in your texture If you are

More information

[ the academy_of_code] Senior Beginners

[ the academy_of_code] Senior Beginners [ the academy_of_code] Senior Beginners 1 Drawing Circles First step open Processing Open Processing by clicking on the Processing icon (that s the white P on the blue background your teacher will tell

More information

MotionGraphix. User Guide. Quick Start. Overview

MotionGraphix. User Guide. Quick Start. Overview MotionGraphix User Guide Quick Start Create a Project Add Elements Position, scale and rotate the elements Change the time and reposition, scale and rotate the elements Change the time again, etc. Double

More information

Projectile Motion. A.1. Finding the flight time from the vertical motion. The five variables for the vertical motion are:

Projectile Motion. A.1. Finding the flight time from the vertical motion. The five variables for the vertical motion are: Projectile Motion A. Finding the muzzle speed v0 The speed of the projectile as it leaves the gun can be found by firing it horizontally from a table, and measuring the horizontal range R0. On the diagram,

More information

Smoother Graphics Taking Control of Painting the Screen

Smoother Graphics Taking Control of Painting the Screen It is very likely that by now you ve tried something that made your game run rather slow. Perhaps you tried to use an image with a transparent background, or had a gazillion objects moving on the window

More information

CISC 1600, Lab 2.3: Processing animation, objects, and arrays

CISC 1600, Lab 2.3: Processing animation, objects, and arrays CISC 1600, Lab 2.3: Processing animation, objects, and arrays Prof Michael Mandel 1 Getting set up For this lab, we will again be using Sketchpad. sketchpad.cc in your browser and log in. Go to http://cisc1600.

More information

touchdevelop R Nigel Horspool University of Victoria Judith Bishop Arjmand Samuel Nikolai Tillmann Michał Moskal Jonathan de Halleux Manuel Fähndrich

touchdevelop R Nigel Horspool University of Victoria Judith Bishop Arjmand Samuel Nikolai Tillmann Michał Moskal Jonathan de Halleux Manuel Fähndrich touchdevelop programming on a phone R Nigel Horspool University of Victoria Judith Bishop Arjmand Samuel Nikolai Tillmann Michał Moskal Jonathan de Halleux Manuel Fähndrich Microsoft Research Version 1

More information

Free Fall. Objective. Materials. Part 1: Determining Gravitational Acceleration, g

Free Fall. Objective. Materials. Part 1: Determining Gravitational Acceleration, g Free Fall Objective Students will work in groups to investigate free fall acceleration on the Earth. Students will measure the fundamental physical constant, g, and evaluate the dependence of free fall

More information

Two-Dimensional Projectile Motion

Two-Dimensional Projectile Motion Two-Dimensional Projectile Motion I. Introduction. This experiment involves the study of motion using a CCD video camera in which a sequence of video frames (a movie ) is recorded onto computer disk and

More information

Making use of other Applications

Making use of other Applications AppGameKit 2 Collision Using Arrays Making use of other Applications Although we need game software to help makes games for modern devices, we should not exclude the use of other applications to aid the

More information

SNOWFLAKES PHOTO BORDER - PHOTOSHOP CS6 / CC

SNOWFLAKES PHOTO BORDER - PHOTOSHOP CS6 / CC Photo Effects: Snowflakes Photo Border (Photoshop CS6 / CC) SNOWFLAKES PHOTO BORDER - PHOTOSHOP CS6 / CC In this Photoshop tutorial, we ll learn how to create a simple and fun snowflakes photo border,

More information

Animator Friendly Rigging Part 1

Animator Friendly Rigging Part 1 Animator Friendly Rigging Part 1 Creating animation rigs which solve problems, are fun to use, and don t cause nervous breakdowns. - http://jasonschleifer.com/ - 1- CONTENTS I. INTRODUCTION... 4 What is

More information

pygame Lecture #2 (Examples: movingellipse, bouncingball, planets, bouncingballgravity)

pygame Lecture #2 (Examples: movingellipse, bouncingball, planets, bouncingballgravity) pygame Lecture #2 (Examples: movingellipse, bouncingball, planets, bouncingballgravity) MOVEMENT IN PYGAME I. Realizing the screen is getting redrawn many times. Let's take a look at the key portion of

More information

How to draw and create shapes

How to draw and create shapes Adobe Flash Professional Guide How to draw and create shapes You can add artwork to your Adobe Flash Professional documents in two ways: You can import images or draw original artwork in Flash by using

More information

CHAPTER 2 EDITING IN TOUCHDEVELOP

CHAPTER 2 EDITING IN TOUCHDEVELOP VERSION 1 CHAPTER 2 In this chapter we describe how to set up TouchDevelop on your phone, how to enter scripts from scratch, and how to extend existing scripts. At the end of the chapter, you should be

More information

Custom Shapes As Text Frames In Photoshop

Custom Shapes As Text Frames In Photoshop Custom Shapes As Text Frames In Photoshop I used a background for this activity. Save it and open in Photoshop: Select Photoshop's Custom Shape Tool from the Tools panel. In the custom shapes options panel

More information

EEN118 LAB FOUR. h = v t - ½ g t 2

EEN118 LAB FOUR. h = v t - ½ g t 2 EEN118 LAB FOUR In this lab you will be performing a simulation of a physical system, shooting a projectile from a cannon and working out where it will land. Although this is not a very complicated physical

More information

HAPPY HOLIDAYS PHOTO BORDER

HAPPY HOLIDAYS PHOTO BORDER HAPPY HOLIDAYS PHOTO BORDER In this Photoshop tutorial, we ll learn how to create a simple and fun Happy Holidays winter photo border! Photoshop ships with some great snowflake shapes that we can use in

More information

Game Programming with. presented by Nathan Baur

Game Programming with. presented by Nathan Baur Game Programming with presented by Nathan Baur What is libgdx? Free, open source cross-platform game library Supports Desktop, Android, HTML5, and experimental ios support available with MonoTouch license

More information

Phone Tilt. Dynamic UI Adaptations for single-handed smartphone interaction. Fasil Negash Mtr No.:

Phone Tilt. Dynamic UI Adaptations for single-handed smartphone interaction. Fasil Negash Mtr No.: 1 Phone Tilt Dynamic UI Adaptations for single-handed smartphone interaction Fasil Negash Mtr No.: 2040556 fasil.negash@hs-augsburg.de WS 2018 / 2019 Hochschule Augsburg Interaction Engineering Prof. Dr.

More information

Adobe Illustrator. Always NAME your project file. It should be specific to you and the project you are working on.

Adobe Illustrator. Always NAME your project file. It should be specific to you and the project you are working on. Adobe Illustrator This packet will serve as a basic introduction to Adobe Illustrator and some of the tools it has to offer. It is recommended that anyone looking to become more familiar with the program

More information

To use the keyboard emulation, you must activate it in the tray icon menu (see 2.6 Enable keyboard emulation)

To use the keyboard emulation, you must activate it in the tray icon menu (see 2.6 Enable keyboard emulation) LEA USER GUIDE Notice: To use LEA you have to buy the client and download the free server at: https://www.leaextendedinput.com/download.php The Client is available in the App Store for IOS and Android

More information

Homework #2 Posted: February 8 Due: February 15

Homework #2 Posted: February 8 Due: February 15 CS26N Motion Planning for Robots, Digital Actors and Other Moving Objects (Winter 2012) Homework #2 Posted: February 8 Due: February 15 How to complete this HW: First copy this file; then type your answers

More information

DigiPen Institute of Technology

DigiPen Institute of Technology DigiPen Institute of Technology Presents Session Four: Game Design Elements DigiPen Institute of Technology 5001 150th Ave NE, Redmond, WA 98052 Phone: (425) 558-0299 www.digipen.edu 2005 DigiPen (USA)

More information

Fruit Snake SECTION 1

Fruit Snake SECTION 1 Fruit Snake SECTION 1 For the first full Construct 2 game you're going to create a snake game. In this game, you'll have a snake that will "eat" fruit, and grow longer with each object or piece of fruit

More information

The Jello Cube Assignment 1, CSCI 520. Jernej Barbic, USC

The Jello Cube Assignment 1, CSCI 520. Jernej Barbic, USC The Jello Cube Assignment 1, CSCI 520 Jernej Barbic, USC 1 The jello cube Undeformed cube Deformed cube The jello cube is elastic, Can be bent, stretched, squeezed,, Without external forces, it eventually

More information

touchdevelop R Nigel Horspool University of Victoria Judith Bishop Arjmand Samuel Nikolai Tillmann Michał Moskal Jonathan de Halleux Manuel Fähndrich

touchdevelop R Nigel Horspool University of Victoria Judith Bishop Arjmand Samuel Nikolai Tillmann Michał Moskal Jonathan de Halleux Manuel Fähndrich touchdevelop programming on a phone R Nigel Horspool University of Victoria Judith Bishop Arjmand Samuel Nikolai Tillmann Michał Moskal Jonathan de Halleux Manuel Fähndrich Microsoft Research Version 1.1

More information

3. Text to Speech 4. Shake it

3. Text to Speech 4. Shake it 3. Text to Speech 4. Shake it Make your phone speak to you! When you shake your phone, you can make your phone shake too. Type a phrase in a text box. Then press a button, and use the TextToSpeech component

More information

Using Flash Animation Basics

Using Flash Animation Basics Using Flash Contents Using Flash... 1 Animation Basics... 1 Exercise 1. Creating a Symbol... 2 Exercise 2. Working with Layers... 4 Exercise 3. Using the Timeline... 6 Exercise 4. Previewing an animation...

More information

Chapter 2 Editing in TouchDevelop

Chapter 2 Editing in TouchDevelop Chapter 2 In this chapter we describe how to set up TouchDevelop on your phone, how to enter scripts from scratch, and how to extend existing scripts. At the end of the chapter, you should be familiar

More information

animation, and what interface elements the Flash editor contains to help you create and control your animation.

animation, and what interface elements the Flash editor contains to help you create and control your animation. e r ch02.fm Page 43 Wednesday, November 15, 2000 8:52 AM c h a p t 2 Animating the Page IN THIS CHAPTER Timelines and Frames Movement Tweening Shape Tweening Fading Recap Advanced Projects You have totally

More information

Computer Graphics 1. Chapter 9 (July 1st, 2010, 2-4pm): Interaction in 3D. LMU München Medieninformatik Andreas Butz Computergraphik 1 SS2010

Computer Graphics 1. Chapter 9 (July 1st, 2010, 2-4pm): Interaction in 3D. LMU München Medieninformatik Andreas Butz Computergraphik 1 SS2010 Computer Graphics 1 Chapter 9 (July 1st, 2010, 2-4pm): Interaction in 3D 1 The 3D rendering pipeline (our version for this class) 3D models in model coordinates 3D models in world coordinates 2D Polygons

More information

COMP30019 Graphics and Interaction Input

COMP30019 Graphics and Interaction Input COMP30019 Graphics and Interaction Input Department of Computing and Information Systems The Lecture outline Introduction Touch Input Gestures Picking Sensors Why Touch? Touch interfaces are increasingly

More information

4) Finish the spline here. To complete the spline, double click the last point or select the spline tool again.

4) Finish the spline here. To complete the spline, double click the last point or select the spline tool again. 1) Select the line tool 3) Move the cursor along the X direction (be careful to stay on the X axis alignment so that the line is perpendicular) and click for the second point of the line. Type 0.5 for

More information

The jello cube. Undeformed cube. Deformed cube

The jello cube. Undeformed cube. Deformed cube The Jello Cube Assignment 1, CSCI 520 Jernej Barbic, USC Undeformed cube The jello cube Deformed cube The jello cube is elastic, Can be bent, stretched, squeezed,, Without external forces, it eventually

More information

Vector Decomposition

Vector Decomposition Projectile Motion AP Physics 1 Vector Decomposition 1 Coordinate Systems A coordinate system is an artificially imposed grid that you place on a problem. You are free to choose: Where to place the origin,

More information

Adding Depth to Games

Adding Depth to Games Game Maker Tutorial Adding Depth to Games Written by Mark Overmars Copyright 2007-2009 YoYo Games Ltd Last changed: December 23, 2009 Uses: Game Maker 8.0, Pro Edition, Advanced Mode Level: Intermediate

More information

Designing the Layout of External Content Using the Widgets Tool

Designing the Layout of External Content Using the Widgets Tool Designing the Layout of External Content Using the Widgets Tool First Published: August 2, 2012 This module describes how to design the layout for display of the data that you have integrated and mapped

More information

EEN118 LAB FOUR. h = v t ½ g t 2

EEN118 LAB FOUR. h = v t ½ g t 2 EEN118 LAB FOUR In this lab you will be performing a simulation of a physical system, shooting a projectile from a cannon and working out where it will land. Although this is not a very complicated physical

More information

ITP 342 Mobile App Dev. Interface Builder in Xcode

ITP 342 Mobile App Dev. Interface Builder in Xcode ITP 342 Mobile App Dev Interface Builder in Xcode New Project From the Main Menu, select the File à New à Project option For the template, make sure Application is selected under ios on the left-hand side

More information

V-BOX Cloud Configuration

V-BOX Cloud Configuration V-BOX Cloud Configuration Website: http://www.we-con.com.cn/en Technical Support: support@we-con.com.cn Skype: fcwkkj Phone: 86-591-87868869 QQ: 1043098682 Technical forum: http://wecon.freeforums.net/

More information

OCR Maths M2. Topic Questions from Papers. Projectiles

OCR Maths M2. Topic Questions from Papers. Projectiles OCR Maths M2 Topic Questions from Papers Projectiles PhysicsAndMathsTutor.com 21 Aparticleisprojectedhorizontallywithaspeedof6ms 1 from a point 10 m above horizontal ground. The particle moves freely under

More information

Exploring Change and Representations of Change: Calculus Concept Connection i

Exploring Change and Representations of Change: Calculus Concept Connection i Exploring Change and Representations of Change: Calculus Concept Connection i Grade Level and Content: Pre-algebra, 7 th or 8 th Grade Mathematics Big Idea: Students explore the concept of change and how

More information

Lost in Space. Introduction. Step 1: Animating a spaceship. Activity Checklist. You are going to learn how to program your own animation!

Lost in Space. Introduction. Step 1: Animating a spaceship. Activity Checklist. You are going to learn how to program your own animation! Lost in Space Introduction You are going to learn how to program your own animation! Step 1: Animating a spaceship Let s make a spaceship that flies towards the Earth! Activity Checklist Start a new Scratch

More information

PSD to Mobile UI Tutorial

PSD to Mobile UI Tutorial PSD to Mobile UI Tutorial Contents Planning for design... 4 Decide the support devices for the application... 4 Target Device for design... 4 Import Asset package... 5 Basic Setting... 5 Preparation for

More information

Overview of Synaptics TouchPad Features

Overview of Synaptics TouchPad Features Overview of Synaptics TouchPad Features Your Synaptics TouchPad is much more powerful than an old-fashioned mouse. In addition to providing all the features of an ordinary mouse, your TouchPad allows you

More information

Shape and Line Tools. tip: Some drawing techniques are so much easier if you use a pressuresensitive

Shape and Line Tools. tip: Some drawing techniques are so much easier if you use a pressuresensitive 4Drawing with Shape and Line Tools Illustrator provides tools for easily creating lines and shapes. Drawing with shapes (rectangles, ellipses, stars, etc.) can be a surprisingly creative and satisfying

More information

form are graphed in Cartesian coordinates, and are graphed in Cartesian coordinates.

form are graphed in Cartesian coordinates, and are graphed in Cartesian coordinates. Plot 3D Introduction Plot 3D graphs objects in three dimensions. It has five basic modes: 1. Cartesian mode, where surfaces defined by equations of the form are graphed in Cartesian coordinates, 2. cylindrical

More information

Chapter 10 Working with Graphs and Charts

Chapter 10 Working with Graphs and Charts Chapter 10: Working with Graphs and Charts 163 Chapter 10 Working with Graphs and Charts Most people understand information better when presented as a graph or chart than when they look at the raw data.

More information

Vectornator Pro. Manual Version 1.0.2, April 5th, A Linearity GmbH Production

Vectornator Pro. Manual Version 1.0.2, April 5th, A Linearity GmbH Production Vectornator Pro Manual Version 1.0.2, April 5th, 2018 A Linearity GmbH Production Vectornator Pro The best and most advanced vector graphic design software for ios A Linearity GmbH Production What you

More information

6.001 Notes: Section 17.5

6.001 Notes: Section 17.5 6.001 Notes: Section 17.5 Slide 17.5.1 Now, let's look at one example in which changing the evaluation model allows us to explore a very different kind of computational problem. Our goal is to show how

More information

Hello App Inventor! Android programming for kids and the rest of us. Chapter 2. by Paula Beer and Carl Simmons. Copyright 2015 Manning Publications

Hello App Inventor! Android programming for kids and the rest of us. Chapter 2. by Paula Beer and Carl Simmons. Copyright 2015 Manning Publications SAMPLE CHAPTER Hello App Inventor! Android programming for kids and the rest of us by Paula Beer and Carl Simmons Chapter 2 Copyright 2015 Manning Publications Brief contents 1 Getting to know App Inventor

More information

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created.

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created. + Inheritance + Inheritance Classes that we design in Java can be used to model some concept in our program. For example: Pokemon a = new Pokemon(); Pokemon b = new Pokemon() Sometimes we need to create

More information

Computer Games Development Spring Practical 3 GameCore, Transforms & Collision Detection

Computer Games Development Spring Practical 3 GameCore, Transforms & Collision Detection In this practical we are going to look at the GameCore class in some detail and then move on to examine the use of transforms, collision detection and tile maps. Combined with the material concerning sounds

More information

FLUENT Secondary flow in a teacup Author: John M. Cimbala, Penn State University Latest revision: 26 January 2016

FLUENT Secondary flow in a teacup Author: John M. Cimbala, Penn State University Latest revision: 26 January 2016 FLUENT Secondary flow in a teacup Author: John M. Cimbala, Penn State University Latest revision: 26 January 2016 Note: These instructions are based on an older version of FLUENT, and some of the instructions

More information

Tutorial 5. Website - Create a folder on the desktop called tutorial 5. Editor Brackets. Goals. Create a website showcasing the following techniques

Tutorial 5. Website - Create a folder on the desktop called tutorial 5. Editor Brackets. Goals. Create a website showcasing the following techniques Tutorial 5 Editor Brackets Goals Create a website showcasing the following techniques - Animated backgrounds - Animated game elements Website - Create a folder on the desktop called tutorial 5 o - Open

More information

Projectile Trajectory Scenarios

Projectile Trajectory Scenarios Projectile Trajectory Scenarios Student Worksheet Name Class Note: Sections of this document are numbered to correspond to the pages in the TI-Nspire.tns document ProjectileTrajectory.tns. 1.1 Trajectories

More information

Game Starter Kit Cheat Sheet

Game Starter Kit Cheat Sheet Game Starter Kit Cheat Sheet In this cheat sheet, I am going to show you how you can create your own custom Flappy Bird Game in a matter of minutes, using FREE Software. The same style of game that was

More information

Assignment #3 Breakout!

Assignment #3 Breakout! Eric Roberts Handout #18 CS 106A January 26, 2005 Assignment #3 Breakout! Due: Friday, February 4, 5:00P.M. Your job in this assignment is to write the classic arcade game of Breakout. It is a large assignment,

More information

Animating the Page IN THIS CHAPTER. Timelines and Frames

Animating the Page IN THIS CHAPTER. Timelines and Frames e r ch02.fm Page 41 Friday, September 17, 1999 10:45 AM c h a p t 2 Animating the Page IN THIS CHAPTER Timelines and Frames Movement Tweening Shape Tweening Fading Recap Advanced Projects You have totally

More information

Elastic Bands: Connecting Path Planning and Control

Elastic Bands: Connecting Path Planning and Control Elastic Bands: Connecting Path Planning and Control Sean Quinlan and Oussama Khatib Robotics Laboratory Computer Science Department Stanford University Abstract Elastic bands are proposed as the basis

More information

EEN118 LAB FOUR. h = v t ½ g t 2

EEN118 LAB FOUR. h = v t ½ g t 2 EEN118 LAB FOUR In this lab you will be performing a simulation of a physical system, shooting a projectile from a cannon and working out where it will land. Although this is not a very complicated physical

More information

Creating Digital Illustrations for Your Research Workshop III Basic Illustration Demo

Creating Digital Illustrations for Your Research Workshop III Basic Illustration Demo Creating Digital Illustrations for Your Research Workshop III Basic Illustration Demo Final Figure Size exclusion chromatography (SEC) is used primarily for the analysis of large molecules such as proteins

More information

Modeling Cloth Using Mass Spring Systems

Modeling Cloth Using Mass Spring Systems Modeling Cloth Using Mass Spring Systems Corey O Connor Keith Stevens May 2, 2003 Abstract We set out to model cloth using a connected mesh of springs and point masses. After successfully implementing

More information

Getting Started Create Your First Notebook

Getting Started Create Your First Notebook Getting Started Create Your First Notebook When you first open GoodNotes, you will be presented with an empty bookshelf. The bookshelf screen lets you manage your notebooks visually. 1. Tap the + button

More information

Numerical Integration

Numerical Integration 1 Numerical Integration Jim Van Verth Insomniac Games jim@essentialmath.com Essential mathematics for games and interactive applications Talk Summary Going to talk about: Euler s method subject to errors

More information

Appendix: To be performed during the lab session

Appendix: To be performed during the lab session Appendix: To be performed during the lab session Flow over a Cylinder Two Dimensional Case Using ANSYS Workbench Simple Mesh Latest revision: September 18, 2014 The primary objective of this Tutorial is

More information

Working with the BCC 3D Image Shatter Filter

Working with the BCC 3D Image Shatter Filter Working with the BCC 3D Image Shatter Filter 3D Image Shatter shatters the image in 3D space and disperses the image fragments. The Þlter provides a variety of explosion, velocity, and gravity parameters

More information

An Educational Rigid-Body Dynamics Physics Engine TJHSST Senior Research Project Proposal Computer Systems Lab

An Educational Rigid-Body Dynamics Physics Engine TJHSST Senior Research Project Proposal Computer Systems Lab An Educational Rigid-Body Dynamics Physics Engine TJHSST Senior Research Project Proposal Computer Systems Lab 2009-2010 Neal Milstein April 9, 2010 Abstract The goal of this project is to create a rigid-body

More information

Polygons and Angles: Student Guide

Polygons and Angles: Student Guide Polygons and Angles: Student Guide You are going to be using a Sphero to figure out what angle you need the Sphero to move at so that it can draw shapes with straight lines (also called polygons). The

More information

Generating Vectors Overview

Generating Vectors Overview Generating Vectors Overview Vectors are mathematically defined shapes consisting of a series of points (nodes), which are connected by lines, arcs or curves (spans) to form the overall shape. Vectors can

More information

Programming Project 1

Programming Project 1 Programming Project 1 Handout 6 CSCI 134: Fall, 2016 Guidelines A programming project is a laboratory that you complete on your own, without the help of others. It is a form of take-home exam. You may

More information