C:\Users\weaver\Justin\Workspace\UAA_2011_A_Spring\CS470\Project\OrbitClash\OrbitClash\SolidEntity.cs

Size: px
Start display at page:

Download "C:\Users\weaver\Justin\Workspace\UAA_2011_A_Spring\CS470\Project\OrbitClash\OrbitClash\SolidEntity.cs"

Transcription

1 1 #region Header Comments 2 3 /* $Id: SolidEntity.cs :53:42Z weaver $ 4 * 5 * Author: Justin Weaver 6 * Date: Mar * Description: Extendable abstract class to facilitate collision detection 8 * between particles. This class is extended by several classes in the game 9 * (e.g. Planet, Ship, and Bullet classes). 10 */ #endregion Header Comments using System; 15 using System.Collections.Generic; 16 using System.Drawing; 17 using SdlDotNet.Core; 18 using SdlDotNet.Graphics; 19 using SdlDotNet.Graphics.Sprites; 20 using SdlDotNet.Particles; namespace OrbitClash 23 { 24 // Notice that this class extends SDL.NET's ParticleSprite class. 25 internal abstract class SolidEntity : ParticleSprite 26 { 27 #region Properties /* Get/Set current particle position (top-left corner) in a nice tidy 30 * Point class. This is just a simple matter of float <--> int 31 * conversion. Use Truncate rather than Floor, Ceiling, or Round in 32 * order to avoid the remote possibility of breaching the boundaries of 33 * the sprite's surface image. 34 */ 35 public Point Position 36 { 37 get 38 { 39 int x = Convert.ToInt32(Math.Truncate(this.X)); 40 int y = Convert.ToInt32(Math.Truncate(this.Y)); 41 return new Point(x, y); 42 } 43 set 44 { 45 this.x = value.x; 46 this.y = value.y; 47 } 48 } // Get the current position of the center of the particle image. 51 public Point Center 52 { 53 get 54 { -1-

2 55 /* Locate the center using the position of the current particle 56 * image's top-left corner, and its Size. 57 */ // Start at the top-left corner of the image's rectangle. 60 Point center = this.position; // Get the image size. 63 Size size = this.sprite.size; // Find the approximate center. 66 center.x += size.width / 2; 67 center.y += size.height / 2; return center; 70 } 71 } // True if this particle is alive (exists); false otherwise. 74 public bool IsAlive 75 { 76 get 77 { 78 // Non-zero particle Life means: alive. 79 return (this.life!= 0); 80 } 81 } #endregion Properties #region Constructors public SolidEntity(Sprite sprite) 88 : base(sprite, 0, 0, new Vector(), 0) 89 { 90 } public SolidEntity(Sprite sprite, float x, float y, Vector vector, int life) 93 : base(sprite, x, y, vector, life) 94 { 95 } #endregion Constructors #region Collision Detection /* A Few Important Notes About Collision Detection 102 * 103 * CS-SDL (which is the C# wrapper for SDL) allows the programmer to 104 * set a target frame rate (fps). If the machine can't maintain the 105 * target rate, things just slow down. In other words, CS-SDL doesn t 106 * drop frames, rather it simply calls your Tick event handler as fast 107 * as it can manage. 108 * -2-

3 109 * I could have implemented frame rate independent movement, to 110 * accommodate slower machines, by moving particles according to the 111 * elapsed time since the last Tick() call. However, I did not, 112 * because it would require me to develop a predictive collision 113 * detection system to use in tandem with my after-the-fact collision 114 * detection system. Without the predictive system, entities could 115 * potentially pass through each other without the collision being 116 * detected. I might still do it, but time is a tough commodity to 117 * come by these days! Besides, predictive collision detection was 118 * never part of the plan I put forward in my presentation (or design 119 * document), but the phrase keep it simple appeared several times. 120 * 121 * On the positive side, the requirements for this game are pretty 122 * minimal. I believe it may be quite a challenge to find a Windows 123 * machine (with.net 4.0) that couldn't run this game without missing 124 * a beat (with no other crippling system loads, naturally). Heck, my 125 * buddy even tested this game in on a virtual machine running Windows 126 * 7 on his half-decade-old Mac laptop, and it looked great. 127 * 128 * To tie up the last loose end, I set a universal speed limit, which 129 * is enforced after all the other updates to solid entities during 130 * each Tick(). The speed limit ensures that no particle can ever 131 * travel further than the radius of the smallest entity in the game 132 * in one Tick(). Thus, the speed limit makes missed collisions, even 133 * on a slow machine, very unlikely. 134 */ public bool GetCollisionStatus(SolidEntity otherentity) 137 { 138 if (!this.isalive) 139 // Dead entities don't collide, because they don't exist. 140 return false; return SolidEntity.GetCollisionStatus(this, otherentity); 143 } /* Returns true if the two specified entities are colliding. This 146 * method has pixel-level accuracy. 147 */ 148 private static bool GetCollisionStatus(SolidEntity entity1, SolidEntity entity2) 149 { 150 /* Immediately grab a reference to each particle sprite image 151 * (Surface), so that any sprite animation will not trip us up by 152 * changing surfaces under us. 153 */ 154 Surface surface1 = entity1.sprite.surface; 155 Surface surface2 = entity2.sprite.surface; // Find the position of each particle image. 158 Point surface1position = new Point(Convert.ToInt32(Math.Truncate(entity1.X )), Convert.ToInt32(Math.Truncate(entity1.Y))); 159 Point surface2position = new Point(Convert.ToInt32(Math.Truncate(entity2.X )), Convert.ToInt32(Math.Truncate(entity2.Y)));

4 161 // Find the size of each particle image. 162 Size surface1size = new Size(Convert.ToInt32(Math.Truncate(entity1.Width)), Convert.ToInt32(Math.Truncate(entity1.Height))); 163 Size surface2size = new Size(Convert.ToInt32(Math.Truncate(entity2.Width)), Convert.ToInt32(Math.Truncate(entity2.Height))); // Put 'em together to make rectangles. 166 Rectangle surface1rec = new Rectangle(surface1Position, surface1size); 167 Rectangle surface2rec = new Rectangle(surface2Position, surface2size); if (!surface1rec.intersectswith(surface2rec)) 170 /* The two entity's bounding rectangles don't even intersect. 171 * They obviously aren't colliding. 172 */ 173 // False: entity1 and entity2 are not colliding. 174 return false; /* Their rectangles do intersect, so now we need to check each 177 * pixel in the overlapping area. 178 */ // Find the intersecting rectangle of the two entities. 181 Rectangle intersectingrectangle = new Rectangle(surface1Rec.Location, surface1rec.size); 182 intersectingrectangle.intersect(surface2rec); /* Lock the two entitiy's surfaces into memory to allow direct 185 * pixel manipulation with high performance. 186 */ 187 surface1.lock(); 188 surface2.lock(); // Check each overlapping pixel. 191 for (int x = 0; x < intersectingrectangle.width; x++) 192 for (int y = 0; y < intersectingrectangle.height; y++) 193 { 194 /* Get the position within each surface of the overlapping 195 * pixel. 196 */ 197 Point surface1pixelposition = new Point(intersectingRectangle.X - surface1rec.x + x, intersectingrectangle.y - surface1rec.y + y); 198 Point surface2pixelposition = new Point(intersectingRectangle.X - surface2rec.x + x, intersectingrectangle.y - surface2rec.y + y); /* Get the color from each surface at the overlapping 201 * pixel. Unlike the GetPixel and SetPixel operations of 202 * the.net Image class, the GetPixel and SetPixel 203 * operations of the C# SDL Surface class allow direct 204 * pixel manipulation, and do not create their own locks 205 * (hence the locks happen outside the loop). 206 */ 207 Color surface1pixelcolor = surface1.getpixel(surface1pixelposition); 208 Color surface2pixelcolor = surface2.getpixel(surface2pixelposition);

5 210 /* True if the pixel at the overlapping point in the 211 * associated surface is transparent. 212 */ 213 bool surface1pixelistransparent = surface1.transparent && surface1pixelcolor == surface1.transparentcolor; 214 bool surface2pixelistransparent = surface2.transparent && surface2pixelcolor == surface2.transparentcolor; /* If both pixels are non-transparent, then we have a 217 * collision! 218 */ 219 if (!surface1pixelistransparent &&!surface2pixelistransparent) 220 { 221 // Unlock the two surfaces before returning. 222 surface1.unlock(); 223 surface2.unlock(); // True: entity1 and entity2 are colliding. 226 return true; 227 } 228 } // Unlock the two surfaces before returning. 231 surface1.unlock(); 232 surface2.unlock(); // False: entity1 and entity2 are not colliding. 235 return false; 236 } #endregion Collision Detection #region Static Helper Operations /* Note: SDL.NET provides the Vector class, which is a vector in the 243 * mathematical sense (i.e. point, direction, magnitude), rather than 244 * the Vector array-object many Java folks will likely be familiar 245 * with. 246 * 247 * Vectors are used to specify particle velocity, but they also make 248 * handy shortcuts for a few generally useful tasks (see below). 249 */ /* Return the position that lies the specified distance (in pixels) 252 * from the specified position, at the specified angle (in degrees). 253 */ 254 public static Point GetPosition(Point startingposition, int angledeg, int distancepixels) 255 { 256 // Create a vector at the starting position. 257 Vector basevector = new Vector(startingPosition.X, startingposition.y, 0); // Create a vector with the specified angle and length. 260 Vector offsetvector = Vector.FromDirection(angleDeg, distancepixels); -5-

6 // Add the two vectors. 263 Vector resultvector = basevector + offsetvector; // Return the resulting position. 266 return resultvector.point; 267 } /* Given two SolidEntity objects, returns the distance (in pixels) 270 * between the centers of the two objects. 271 */ 272 public static double GetDistance(SolidEntity entity1, SolidEntity entity2) 273 { 274 // Create a vector between the two entities to find the distance. 275 Vector v = new Vector(entity1.Center, entity2.center); 276 return v.length; 277 } /* Given two SolidEntity objects, returns the degree of the angle 280 * between the centers of the two entities (with entity1's center as 281 * the origin). 282 */ 283 public static int GetDirectionDeg(SolidEntity entity1, SolidEntity entity2) 284 { 285 // Create a vector between the two entities to find the angle. 286 Vector v = new Vector(entity1.Center, entity2.center); 287 return Convert.ToInt32(Math.Truncate(v.DirectionDeg)); 288 } #endregion Static Helper Operations 291 } 292 } -6-

Bridges To Computing

Bridges To Computing Bridges To Computing General Information: This document was created for use in the "Bridges to Computing" project of Brooklyn College. You are invited and encouraged to use this presentation to promote

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

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

This is a set of tiles I made for a mobile game (a long time ago). You can download it here:

This is a set of tiles I made for a mobile game (a long time ago). You can download it here: Programming in C++ / FASTTRACK TUTORIALS Introduction PART 11: Tiles It is time to introduce you to a great concept for 2D graphics in C++, that you will find very useful and easy to use: tilemaps. Have

More information

Collisions/Reflection

Collisions/Reflection Collisions/Reflection General Collisions The calculating whether or not two 2D objects collide is equivalent to calculating if the two shapes share a common area (intersect). For general polygons this

More information

s Fluid Dynamics v2.0

s Fluid Dynamics v2.0 s Fluid Dynamics v2.0 For Adobe After Effects 7.0/CS3 User Guide CONTENTS WHAT S NEW... 3 REQUIREMENTS... 3 INSTALLATION... 3 QUICK START... 4 SUPPORT FOR FLUID DYNAMICS... 4 INTRODUCTION... 4 FLUID...

More information

LECTURE 4. Announcements

LECTURE 4. Announcements LECTURE 4 Announcements Retries Email your grader email your grader email your grader email your grader email your grader email your grader email your grader email your grader email your grader email your

More information

No more engine requirements! From now on everything you work on is designed by you. Congrats!

No more engine requirements! From now on everything you work on is designed by you. Congrats! No more engine requirements! From now on everything you work on is designed by you Congrats! Design check required Ben: Thursday 2-4 David: Thursday 8-10 Jeff: Friday 2-4 Tyler: Friday 4-6 Final III Don

More information

PixelSurface a dynamic world of pixels for Unity

PixelSurface a dynamic world of pixels for Unity PixelSurface a dynamic world of pixels for Unity Oct 19, 2015 Joe Strout joe@luminaryapps.com Overview PixelSurface is a small class library for Unity that lets you manipulate 2D graphics on the level

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

Introduction to Game Programming Lesson 4 Lecture Notes

Introduction to Game Programming Lesson 4 Lecture Notes Introduction to Game Programming Lesson 4 Lecture Notes Learning Objectives: Following this lecture, the student should be able to: Define frame rate List the factors that affect the amount of time a game

More information

Minecraft Due: Mar. 1, 2015

Minecraft Due: Mar. 1, 2015 CS1972 Topics in 3D Game Engine Development Barbara Meier Minecraft Due: Mar. 1, 2015 Introduction In this assignment you will build your own version of one of the most popular indie games ever: Minecraft.

More information

Start Visual Studio, start a new Windows Form project under the C# language, name the project BalloonPop MooICT and click OK.

Start Visual Studio, start a new Windows Form project under the C# language, name the project BalloonPop MooICT and click OK. Start Visual Studio, start a new Windows Form project under the C# language, name the project BalloonPop MooICT and click OK. Before you start - download the game assets from above or on MOOICT.COM to

More information

Collision detection. Piotr Fulma«ski. 19 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Collision detection. Piotr Fulma«ski. 19 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska Collision detection Piotr Fulma«ski Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska 19 pa¹dziernika 2015 Table of contents Collision in games Algorithms to detect collision in games depend

More information

Form Properties Window

Form Properties Window C# Tutorial Create a Save The Eggs Item Drop Game in Visual Studio Start Visual Studio, Start a new project. Under the C# language, choose Windows Form Application. Name the project savetheeggs and click

More information

BRASIL Language Specification

BRASIL Language Specification BRASIL Language Specification March 9, 2010 Contents 1 Introduction 3 2 Getting Started: Simulations in BRASIL 4 2.1 The State-Effect Design Pattern.................................. 5 2.2 Supporting the

More information

Chapter 12: Functions Returning Booleans and Collision Detection

Chapter 12: Functions Returning Booleans and Collision Detection Processing Notes Chapter 12: Functions Returning Booleans and Collision Detection So far we have not done much with booleans explicitly. Again, a boolean is a variable or expression that takes on exactly

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

How to Program a Primitive Twin-Stick Shooter in Monogame 3.4

How to Program a Primitive Twin-Stick Shooter in Monogame 3.4 How to Program a Primitive Twin-Stick Shooter in Monogame 3.4 This is a tutorial for making a basic twin-stick style shooter in C# using Monogame 3.4 and Microsoft Visual Studio. This guide will demonstrate

More information

Click on the empty form and apply the following options to the properties Windows.

Click on the empty form and apply the following options to the properties Windows. Start New Project In Visual Studio Choose C# Windows Form Application Name it SpaceInvaders and Click OK. Click on the empty form and apply the following options to the properties Windows. This is the

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

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

Start Visual Studio, create a new project called Helicopter Game and press OK

Start Visual Studio, create a new project called Helicopter Game and press OK C# Tutorial Create a helicopter flying and shooting game in visual studio In this tutorial we will create a fun little helicopter game in visual studio. You will be flying the helicopter which can shoot

More information

TUTORIAL. Ve r s i on 1. 0

TUTORIAL. Ve r s i on 1. 0 TUTORIAL Ve r s i on 1. 0 C O N T E N T S CHAPTER 1 1 Introduction 3 ABOUT THIS GUIDE... 4 THIS TUTORIAL...5 PROJECT OUTLINE...5 WHAT'S COVERED...5 SOURCE FILES...6 CHAPTER 2 2 The Tutorial 7 THE ENVIRONMENT...

More information

Please go to the Riemer s 2D XNA Tutorial for C# by clicking on You are allowed to progress ahead of me by

Please go to the Riemer s 2D XNA Tutorial for C# by clicking on   You are allowed to progress ahead of me by 2D Shooter game- Part 2 Please go to the Riemer s 2D XNA Tutorial for C# by clicking on http://bit.ly/riemers2d You are allowed to progress ahead of me by reading and doing to tutorial yourself. I ll

More information

Domain-Driven Design Activity

Domain-Driven Design Activity Domain-Driven Design Activity SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Entities and Value Objects are special types of objects

More information

SimTenero Particle Physics

SimTenero Particle Physics SimTenero Particle Physics Getting Started The heart of the particle system is the Emitter. This represents the point in space where particles will be created and contains all of the parameters that define

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

Collision detection. Piotr Fulma«ski. 1 grudnia

Collision detection. Piotr Fulma«ski. 1 grudnia Collision detection Piotr Fulma«ski piotr@fulmanski.pl 1 grudnia 2016 Table of contents Collision in games Algorithms to detect collision in games depend on the type of shapes that can collide (e.g. rectangle

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

Principles of Computer Game Design and Implementation. Lecture 11

Principles of Computer Game Design and Implementation. Lecture 11 Principles of Computer Game Design and Implementation Lecture 11 We already learned Vector operations Sum Subtraction Dot product Cross product A few others about jmonkey, eg. User input, camera, etc 2

More information

(C) 2010 Pearson Education, Inc. All rights reserved. Omer Boyaci

(C) 2010 Pearson Education, Inc. All rights reserved. Omer Boyaci Omer Boyaci A sprite must monitor the game environment, for example, reacting to collisions with different sprites or stopping when it encounters an obstacle. Collision processing can be split into two

More information

Polygon Filling. Can write frame buffer one word at time rather than one bit. 2/3/2000 CS 4/57101 Lecture 6 1

Polygon Filling. Can write frame buffer one word at time rather than one bit. 2/3/2000 CS 4/57101 Lecture 6 1 Polygon Filling 2 parts to task which pixels to fill what to fill them with First consider filling unclipped primitives with solid color Which pixels to fill consider scan lines that intersect primitive

More information

Multimedia-Programmierung Übung 5

Multimedia-Programmierung Übung 5 Multimedia-Programmierung Übung 5 Ludwig-Maximilians-Universität München Sommersemester 2009 Ludwig-Maximilians-Universität München Multimedia-Programmierung 5-1 Today Sprite animations in Advanced collision

More information

Video Games. Writing Games with Pygame

Video Games. Writing Games with Pygame Video Games Writing Games with Pygame Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0

More information

Math Dr. Miller - Constructing in Sketchpad (tm) - Due via by Friday, Mar. 18, 2016

Math Dr. Miller - Constructing in Sketchpad (tm) - Due via  by Friday, Mar. 18, 2016 Math 304 - Dr. Miller - Constructing in Sketchpad (tm) - Due via email by Friday, Mar. 18, 2016 As with our second GSP activity for this course, you will email the assignment at the end of this tutorial

More information

Animation in Java 3D

Animation in Java 3D Computer Game Technologies Animation in Java 3D Computer Game Technologies, 2017 1 Animation in Java 3D Animation is a change without any direct user action Time-based animation Interpolators Alpha objects

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

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

W: The LiveWires module

W: The LiveWires module : Gareth McCaughan and Paul Wright Revision 1.16, October 27, 2001 Credits c Gareth McCaughan and Paul Wright. All rights reserved. This document is part of the LiveWires Python Course. You may modify

More information

GstarCAD Complete Features Guide

GstarCAD Complete Features Guide GstarCAD 2017 Complete Features Guide Table of Contents Core Performance Improvement... 3 Block Data Sharing Process... 3 Hatch Boundary Search Improvement... 4 New and Enhanced Functionalities... 5 Table...

More information

A Summoner's Tale MonoGame Tutorial Series. Chapter 9. Conversations Continued

A Summoner's Tale MonoGame Tutorial Series. Chapter 9. Conversations Continued A Summoner's Tale MonoGame Tutorial Series Chapter 9 Conversations Continued This tutorial series is about creating a Pokemon style game with the MonoGame Framework called A Summoner's Tale. The tutorials

More information

Understanding Geospatial Data Models

Understanding Geospatial Data Models Understanding Geospatial Data Models 1 A geospatial data model is a formal means of representing spatially referenced information. It is a simplified view of physical entities and a conceptualization of

More information

OMINO PYTHON for After Effects

OMINO PYTHON for After Effects OMINO PYTHON for After Effects from omino.com, 2010 1 Contents Introduction... 3 Installation & Licensing... 4 Quick Start! Instant Gratification... 5 The Workflow... 6 A Script... 7 A Script That Draws...

More information

Networking, Traffic Jams, and Schrödinger's Cat. Shawn Hargreaves Software Development Engineer XNA Community Game Platform Microsoft

Networking, Traffic Jams, and Schrödinger's Cat. Shawn Hargreaves Software Development Engineer XNA Community Game Platform Microsoft Networking, Traffic Jams, and Schrödinger's Cat Shawn Hargreaves Software Development Engineer XNA Community Game Platform Microsoft XNA Framework Networking I spoke about networking at Gamefest 2007 What

More information

CS 201 Advanced Object-Oriented Programming Lab 4 - Asteroids, Part 2 Due: February 24/25, 11:30 PM

CS 201 Advanced Object-Oriented Programming Lab 4 - Asteroids, Part 2 Due: February 24/25, 11:30 PM CS 201 Advanced Object-Oriented Programming Lab 4 - Asteroids, Part 2 Due: February 24/25, 11:30 PM Introduction to the Assignment In this lab, you will complete the Asteroids program that you started

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

CS193D Handout 10 Winter 2005/2006 January 23, 2006 Pimp Your Classes

CS193D Handout 10 Winter 2005/2006 January 23, 2006 Pimp Your Classes CS193D Handout 10 Winter 2005/2006 January 23, 2006 Pimp Your Classes See also: The middle part of Chapter 9 (194-208), Chapter 12 Pretty much any Object-Oriented Language lets you create data members

More information

Adobe Photoshop How to Use the Marquee Selection Tools

Adobe Photoshop How to Use the Marquee Selection Tools Adobe Photoshop How to Use the Marquee Selection Tools In Photoshop there are various ways to make a selection and also various reasons why you'd want to make a selection. You may want to remove something

More information

Macromedia Director Tutorial 4

Macromedia Director Tutorial 4 Macromedia Director Tutorial 4 Further Lingo Contents Introduction...1 Play and Play done...2 Controlling QuickTime Movies...3 Controlling Playback...3 Introducing the if, then, else script...6 PuppetSprites

More information

Lecture 13 Geometry and Computational Geometry

Lecture 13 Geometry and Computational Geometry Lecture 13 Geometry and Computational Geometry Euiseong Seo (euiseong@skku.edu) 1 Geometry a Branch of mathematics concerned with questions of shape, size, relative position of figures, and the properties

More information

Danmaku Mono Documentation

Danmaku Mono Documentation Danmaku Mono Documentation Release 0.01b UltimaOmega February 21, 2017 Miscellaneous Functions 1 Miscellaneous Functions 3 1.1 GetKeyState(keytocheck)........................................ 3 1.2 SetKeyState(key,

More information

CS 106 Winter Lab 05: User Interfaces

CS 106 Winter Lab 05: User Interfaces CS 106 Winter 2018 Lab 05: User Interfaces Due: Wednesday, February 6th, 11:59pm This lab will allow you to practice User Interfaces using Direct Manipulation and ControlP5. Each question is on a separate

More information

Solution Notes. COMP 151: Terms Test

Solution Notes. COMP 151: Terms Test Family Name:.............................. Other Names:............................. ID Number:............................... Signature.................................. Solution Notes COMP 151: Terms

More information

TEAM 12: TERMANATOR PROJECT PROPOSAL. TEAM MEMBERS: Donald Eng Rodrigo Ipince Kevin Luu

TEAM 12: TERMANATOR PROJECT PROPOSAL. TEAM MEMBERS: Donald Eng Rodrigo Ipince Kevin Luu TEAM 12: TERMANATOR PROJECT PROPOSAL TEAM MEMBERS: Donald Eng Rodrigo Ipince Kevin Luu 1. INTRODUCTION: This project involves the design and implementation of a unique, first-person shooting game. The

More information

Photoshop Tutorial: Basic Selections

Photoshop Tutorial: Basic Selections Photoshop Tutorial: Basic Selections Written by Steve Patterson, Edited by Mr. Nickel In this Photoshop tutorial, we're going to look at how to get the most out of Photoshop's basic selection tools, such

More information

Game Board: Enabling Simple Games in TouchDevelop

Game Board: Enabling Simple Games in TouchDevelop Game Board: Enabling Simple Games in TouchDevelop Manuel Fähndrich Microsoft Research One Microsoft Way, Redmond WA 98052, USA maf@microsoft.com February 23, 2012 Abstract TouchDevelop is a novel application

More information

1 GSW Bridging and Switching

1 GSW Bridging and Switching 1 Sandwiched between the physical and media access layers of local area networking (such as Ethernet) and the routeing of the Internet layer of the IP protocol, lies the thorny subject of bridges. Bridges

More information

HTML and CSS a further introduction

HTML and CSS a further introduction HTML and CSS a further introduction By now you should be familiar with HTML and CSS and what they are, HTML dictates the structure of a page, CSS dictates how it looks. This tutorial will teach you a few

More information

IP subnetting made easy

IP subnetting made easy Version 1.0 June 28, 2006 By George Ou Introduction IP subnetting is a fundamental subject that's critical for any IP network engineer to understand, yet students have traditionally had a difficult time

More information

SPRITES Moving Two At the Same Using Game State

SPRITES Moving Two At the Same Using Game State If you recall our collision detection lesson, you ll likely remember that you couldn t move both sprites at the same time unless you hit a movement key for each at exactly the same time. Why was that?

More information

PHP Syntax. PHP is a great example of a commonly-used modern programming language.

PHP Syntax. PHP is a great example of a commonly-used modern programming language. PHP is a great example of a commonly-used modern programming language. C was first released in 1972, PHP in 1995. PHP is an excellent language choice for software that requires an easy way to do things

More information

The Stack, Free Store, and Global Namespace

The Stack, Free Store, and Global Namespace Pointers This tutorial is my attempt at clarifying pointers for anyone still confused about them. Pointers are notoriously hard to grasp, so I thought I'd take a shot at explaining them. The more information

More information

XNA Development: Tutorial 6

XNA Development: Tutorial 6 XNA Development: Tutorial 6 By Matthew Christian (Matt@InsideGamer.org) Code and Other Tutorials Found at http://www.insidegamer.org/xnatutorials.aspx One of the most important portions of a video game

More information

Rubik's Cube Algorithm

Rubik's Cube Algorithm Rubik's Cube Algorithm The assignment was to create an algorithm that would solve a randomly organized Rubik's Cube. While very simple on the surface, this problem turned out to be incredibly complex,

More information

Frame Editor 2 Manual

Frame Editor 2 Manual Chaos Culture Frame Editor 2 Manual Setup... 2 Editing clips... 2 Editing basics... 4 Managing colors... 6 Using effects... 7 Descriptions of the effects... 9 Fixed velocity... 9 Random velocity... 9 Rotate...

More information

v0.4.1 ( ) An AviSynth plug-in that remaps the frame indices in a clip as specified by an input text file or by an input string.

v0.4.1 ( ) An AviSynth plug-in that remaps the frame indices in a clip as specified by an input text file or by an input string. RemapFrames v0.4.1 (2014-01-16) An AviSynth plug-in that remaps the frame indices in a clip as specified by an input text file or by an input string. by James D. Lin (stickboy) Overview RemapFrames, RemapFramesSimple,

More information

OMINO PYTHON for After Effects

OMINO PYTHON for After Effects OMINO PYTHON for After Effects from omino.com, 2010-2012 1 Contents Introduction... 3 Installation & Licensing... 4 Quick Start! Instant Gratification... 5 The Workflow... 6 A Script... 7 A Script That

More information

Modeling a Gear Standard Tools, Surface Tools Solid Tool View, Trackball, Show-Hide Snaps Window 1-1

Modeling a Gear Standard Tools, Surface Tools Solid Tool View, Trackball, Show-Hide Snaps Window 1-1 Modeling a Gear This tutorial describes how to create a toothed gear. It combines using wireframe, solid, and surface modeling together to create a part. The model was created in standard units. To begin,

More information

Multimedia-Programmierung Übung 7

Multimedia-Programmierung Übung 7 Multimedia-Programmierung Übung 7 Ludwig-Maximilians-Universität München Sommersemester 2013 Ludwig-Maximilians-Universität München Multimedia-Programmierung 7-1 Today Sprite animations in Advanced collision

More information

GAME:IT Advanced. C# XNA Bouncing Ball First Game Part 1

GAME:IT Advanced. C# XNA Bouncing Ball First Game Part 1 GAME:IT Advanced C# XNA Bouncing Ball First Game Part 1 Objectives By the end of this lesson, you will have learned about and will be able to apply the following XNA Game Studio 4.0 concepts. Intro XNA

More information

Chapter 6 Dialogs. Creating a Dialog Style Form

Chapter 6 Dialogs. Creating a Dialog Style Form Chapter 6 Dialogs We all know the importance of dialogs in Windows applications. Dialogs using the.net FCL are very easy to implement if you already know how to use basic controls on forms. A dialog is

More information

Lecture 13 Notes Sets

Lecture 13 Notes Sets Lecture 13 Notes Sets 15-122: Principles of Imperative Computation (Spring 2016) Frank Pfenning, Rob Simmons 1 Introduction In this lecture, we will discuss the data structure of hash tables further and

More information

Art 486: Introduction to Interactive Media.

Art 486: Introduction to Interactive Media. Art 486: Introduction to Interactive Media mcdo@umbc.edu Schedule Chapter 3! Comments and stuff 3: Puzzles Attributes of Good Puzzle Design Intuitive controls Readily-Identifiable patterns Allows skill

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

CS 201 Advanced Object-Oriented Programming Lab 3, Asteroids Part 1 Due: February 17/18, 11:30 PM

CS 201 Advanced Object-Oriented Programming Lab 3, Asteroids Part 1 Due: February 17/18, 11:30 PM CS 201 Advanced Object-Oriented Programming Lab 3, Asteroids Part 1 Due: February 17/18, 11:30 PM Objectives to gain experience using inheritance Introduction to the Assignment This is the first of a 2-part

More information

Bullet Things. May 26, 2008

Bullet Things. May 26, 2008 Bullet Things May 26, 2008 Contents 1 Stepping the World 1 1.1 What do the parameters to btdynamicsworld::stepsimulation mean?............... 1 1.2 How do I use this?.........................................

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

CS 543: Computer Graphics. Rasterization

CS 543: Computer Graphics. Rasterization CS 543: Computer Graphics Rasterization Robert W. Lindeman Associate Professor Interactive Media & Game Development Department of Computer Science Worcester Polytechnic Institute gogo@wpi.edu (with lots

More information

CS140 Final Project. Nathan Crandall, Dane Pitkin, Introduction:

CS140 Final Project. Nathan Crandall, Dane Pitkin, Introduction: Nathan Crandall, 3970001 Dane Pitkin, 4085726 CS140 Final Project Introduction: Our goal was to parallelize the Breadth-first search algorithm using Cilk++. This algorithm works by starting at an initial

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

Object-Oriented Programming Concepts

Object-Oriented Programming Concepts Object-Oriented Programming Concepts Real world objects include things like your car, TV etc. These objects share two characteristics: they all have state and they all have behavior. Software objects are

More information

Implementing Object Equivalence in Java Using the Template Method Design Pattern

Implementing Object Equivalence in Java Using the Template Method Design Pattern Implementing Object Equivalence in Java Using the Template Method Design Pattern Daniel E. Stevenson and Andrew T. Phillips Computer Science Department University of Wisconsin-Eau Claire Eau Claire, WI

More information

CMPSCI 119 LAB #2 Anime Eyes Professor William T. Verts

CMPSCI 119 LAB #2 Anime Eyes Professor William T. Verts CMPSCI 119 LAB #2 Anime Eyes Professor William T. Verts The goal of this Python programming assignment is to write your own code inside a provided program framework, with some new graphical and mathematical

More information

Mathematical Approaches for Collision Detection in Fundamental Game Objects

Mathematical Approaches for Collision Detection in Fundamental Game Objects Mathematical Approaches for Collision Detection in Fundamental Game Objects Weihu Hong 1, Junfeng Qu 2, Mingshen Wu 3 1 Department of Mathematics, Clayton State University, Morrow, GA, 30260 2 Department

More information

Chapter 13 - Modifiers

Chapter 13 - Modifiers Chapter 13 - Modifiers The modifier list continues to grow with each new release of Blender. We have already discussed the Subdivision Surface (SubSurf) and Ocean modifiers in previous chapters and will

More information

C# Language. CSE 409 Advanced Internet Technology

C# Language. CSE 409 Advanced Internet Technology C# Language Today You will learn Building a basic class Value Types and Reference Types Understanding Namespaces and Assemblies Advanced Class Programming CSE 409 Advanced Internet Technology Building

More information

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the I'm Andy Glover and this is the Java Technical Series of the developerworks podcasts. My guest is Brian Jakovich. He is the director of Elastic Operations for Stelligent. He and I are going to talk about

More information

2D Graphics in XNA Game Studio Express (Modeling a Class in UML)

2D Graphics in XNA Game Studio Express (Modeling a Class in UML) 2D Graphics in XNA Game Studio Express (Modeling a Class in UML) Game Design Experience Professor Jim Whitehead February 5, 2008 Creative Commons Attribution 3.0 creativecommons.org/licenses/by/3.0 Announcements

More information

Floating Point. CSC207 Fall 2017

Floating Point. CSC207 Fall 2017 Floating Point CSC207 Fall 2017 Ariane 5 Rocket Launch Ariane 5 rocket explosion In 1996, the European Space Agency s Ariane 5 rocket exploded 40 seconds after launch. During conversion of a 64-bit to

More information

Web-interface for Monte-Carlo event generators

Web-interface for Monte-Carlo event generators Web-interface for Monte-Carlo event generators Jonathan Blender Applied and Engineering Physics, Cornell University, Under Professor K. Matchev and Doctoral Candidate R.C. Group Sponsored by the University

More information

More About Objects and Methods

More About Objects and Methods More About Objects and Methods Chapter 5 Chapter 5 1 Programming with Methods - Methods Calling Methods A method body may contain an invocation of another method. Methods invoked from method main typically

More information

ITP 342 Mobile App Dev. Fundamentals

ITP 342 Mobile App Dev. Fundamentals ITP 342 Mobile App Dev Fundamentals Object-oriented Programming A programming paradigm based on the concept of objects. Properties Variables holding data Can be varying types Methods Behaviors An action

More information

CS 376b Computer Vision

CS 376b Computer Vision CS 376b Computer Vision 09 / 25 / 2014 Instructor: Michael Eckmann Today s Topics Questions? / Comments? Enhancing images / masks Cross correlation Convolution C++ Cross-correlation Cross-correlation involves

More information

Java Collections Framework

Java Collections Framework Java Collections Framework Introduction In this article from my free Java 8 course, you will be given a high-level introduction of the Java Collections Framework (JCF). The term Collection has several

More information

SDL2 Release latest May 19, 2017

SDL2 Release latest May 19, 2017 SDL2 g fxutils documentationdocumentation Release latest May 19, 2017 Contents 1 SDL2_gfxutils presentation 3 1.1 SDL2_gfxutils brief history....................................... 3 1.2 SDL2_gfxutils

More information

APARAT DE MASURA. Descrierea programului

APARAT DE MASURA. Descrierea programului APARAT DE MASURA Descrierea programului Acest program reprezinta un aparat de masura universal. Acest apparat poate fi modificat in functie de necesitatile utilizatorului. Modificarile pe care aparatul

More information

Oriented Programming Terminology. Using classes and instances to design a system. Example Instance Diagram

Oriented Programming Terminology. Using classes and instances to design a system. Example Instance Diagram Object- Oriented Programming Terminology Class Diagram Instance Diagram Class: specifies the common behavior of entities in scheme, a "maker" procedure Instance: A particular object or entity of a given

More information

How to create shapes. Drawing basic shapes. Adobe Photoshop Elements 8 guide

How to create shapes. Drawing basic shapes. Adobe Photoshop Elements 8 guide How to create shapes With the shape tools in Adobe Photoshop Elements, you can draw perfect geometric shapes, regardless of your artistic ability or illustration experience. The first step to drawing shapes

More information

SDL.NET Programming Tutorial by Example

SDL.NET Programming Tutorial by Example SDL.NET Programming Tutorial by Example (c) 2008 Egon A. Rath Please note that this Tutorial is not for the absolute beginner. I assume that you already can code fluent in C# and that you are able to understand

More information