This section contains some of my programming projects that were created for courses at RIT. These projects tackle some common programming problems like networking and user interfaces. Other examples demonstrate techniques typically used in games (like physics, path-finding, or graphics programming).



Java GUI and Networking

This game was the final project for my freshman programming sequence. The goal for the assignment was to make a multi-player, networked board game using a client and a server. This assignment combined some of the important things that we had learned in the programming sequence such as networking and user interfaces. The game is called Breakthrough and is somewhat similar to checkers, but the goal is only to get one of your pieces to the other side of the board, while stopping the other player from doing the same.

I implemented a GUI, game logic and networking for both the client and server applications. I also added some cool extra features, like the ability to choose a theme for your game pieces and the ability to trace back the path of all of the game pieces after the game was over.

One of the goals for this project was for the entire class to use the same network protocol. This would make it possible for any student to use their client to connect to any other student's server and vice versa. I ended up designing the protocol that dictates the client-server interactions, which was successfully used by my entire programming class.

Click to enlarge:


Links:
Download Breakthrough




A* Pathfinding Demos

This demo shows some examples of the A* path-finding algorithm. There are two different programs that I wrote to demo this algorithm.

The first is a flash version. This version has some nice interactive elements and animation. When any key is pressed, the red circle will find its way to the blue circle as long as there is a possible way to get there. Clicking on the grid will add or remove walls from the grid spaces.

The second version is in Java and was written for an AI assignment. This version shows a more practical application of the algorithm in plotting a course between two actual cities on a map. The user can pick start and end city on a map of the United States and compare breadth-first, depth-first and A* search results.

» Click to open 'pathfinding' Flash content


Click to enlarge:


Links:
Download the Java map searching program




3D in Flash

I wrote these programs after I took a game algorithms class where I learned some of the math necessary to do 3D graphics. I became interested in doing 3D programming for Flash because there is no built-in support for 3D graphics. It was a good environment for starting from scratch to show that I could really understand the whole process. My code interfaces with Flash's 2D drawing API to actually render the 3D objects to the screen.

The first program allows the user to create and edit surfaces and vertices for 3D shapes, and to select more shapes from a list of presets. Attributes of the shape, such as color, are also editable. The shapes can also be exported to XML, so they can be saved.

After I wrote the first program, I decided that I wanted 'real' models that were more complex than anything I was going to produce with my own dinky, cumbersome model maker. I wrote a program that parsed FBX files (which is a file format usable by Maya, 3DS Max, etc) and saved them to a stripped-down binary file format of my own specification. I then wrote a Flash model viewer that built on top of the old model maker program and could read this format. This new version incorporates some new optimizations and texturing.

» Click to open 'ModelMaker' Flash content
» Click to open 'ModelView' Flash content


Click to enlarge:




Checkers with Minimax

This program was created for Intro to Gameplay Programming. The assignment was to create AI for a Checkers. Because Checkers is a two-player zero-sum game, I chose to implement a Minimax algorithm to govern the AI opponent's decisions. Before each move, the algorithm generates a heuristics-based score for a series of potential moves, and then chooses the best one.

Once I got that working, I added some more fun features. The players have the ability to toggle AI on and off for either player, making it possible for human players to pick up or put down the game whenever they want, and just have the computer take over for them the rest of the time. I also did some animation to show the computer player's hand icon picking up the pieces and moving them to give the computer a more human feel.



Click to enlarge:




2D Billiards Physics in Flash

This game was an assignment for a game algorithms class. The goal of the assignment was to create a Billiards simulation where all the balls on the table had realistic physics-based interactions. These interactions include some collision detection, and transfer of momentum.

I also played with some of the sound API in ActionScript 3.0 to get the right feel with the sounds (the volume of the sounds is based on velocity). The game is modeled after billiards, but the normal rules don't really apply... just hit all the balls in!

» Click to open 'Billiards' Flash content


Click to enlarge:




Pac-Man Automata and Vector Math

This program was an assignment for Programming for Digital Media. The objective of the assignment was to make several autonomous characters on the screen that used some of the Boids flocking behaviors and do some obstacle avoidance. In this demo, the steering of the characters is governed by some vector math (dot products etc.).

For the characters, I chose to use Pac-Man and the blue ghosts that he can eat. There are three Pac-Man characters, several hundred ghosts, and some cherry obstacles that all of the characters avoid.

An example of a flocking behavior would be how the Pac-Man characters use separation so that they don't bump into each other. This behavior creates the effect of having the hungry Pac-Men characters competing with each other for food. On the other hand, the ghosts do not use separation. This creates the effect of having swarms of ghosts that look like schools of fish.

The other thing that is different about this program is that the characters are all generated using bitmap images instead of vectors. Instead of rasterizing vector drawings, the program creates a sprite sheet for each character to quickly copy over the images to a bitmap that is drawn to the screen.

» Click to open 'PacMan' Flash content


Click to enlarge:




Puzzle Data Structures

This game was another game algorithms assignment. The game loads in a random image and then cuts it up into smaller pieces in order to make the puzzle. This game was an exercise in creating the data structures that group different clusters of data (puzzle pieces in this case).

The images for this game are all randomly selected from Google image searches.

» Click to open 'Puzzle' Flash content


Click to enlarge:


Links:
See the pictures used for this demo




OpenGL Particle Demo

This demo was a project for a game algorithms class. The assignment was to take an existing physics engine and make something new out of it. I chose to work with a particle system that was a part of that engine. I modified the system to achieve a compelling visual effect where each particle spawns more particles after a certain amount of time.

Click to enlarge:


Links:
Download Particle Demo .exe




Visual C++ Windows GUI

This program is was an assignment for a Visual C++ class. For this assignment we were told to make a 'GUI from Hell'. The assignment gave each student the freedom to implement whatever ridiculous ideas came to mind in hopes of getting each student interested in learning how to implement their own GUI.

My concept for this assignment was to create a user interface that would repeatedly get hit by a series of natural disasters. The disasters cause the components of the interface to move around the window in various different ways. This includes tornadoes, tsunamis, earthquakes, volcanic eruptions etc.

After working on several games, I had become accustomed to programming in an environment where you constantly update the state of the program, then redraw the screen. However these GUI's were set up to use an event driven model. To solve this issue, I added a timer to my GUI which called an update function at a fast enough frequency to create some convincing animation. I was then able to animate all of the elements of my GUI.

Click to enlarge:


Links:
Download the Natural Disaster GUI




Java Threading Demo

This program was for an assignment meant to demonstrate threading. The user can choose a number of cars, which then race across the window.

Each car is running on a separate thread, which constantly increments the car's position. The purpose of this assignment was to demonstrate the varying and unpredictable nature of timing with threads.

Click to enlarge:


Links:
Download Racing Cars Demo




  • 97 body temp
  • raamakants.com
  • cable parallel electrical wires
  • 2007 cma music festival
  • 23666 hampton va
  • tinnitus from whiplash
  • 1940 bomb raids on london
  • 2 feb tournament frisco
  • apartments in waverly new york
  • 1884 e palomino drive gibert az
  • bluetooth wireless receivers
  • teeniepreview.com
  • happened boston tea party
  • 2cv alan and joe taylor normandy
  • epi genome
  • 2000 pontiac grand prix door locks
  • act oakley sarbanes
  • black zodiac jackal drawings
  • bradley farms in elmira ny
  • castor oil constipation
  • 0-30 ft of h2o gage
  • bevel wall mounted tilt mirrors
  • bree concierge
  • a reduce transaction costs
  • cibc employee lawsuit
  • motelinthemeadow.com
  • sikh caste
  • african bush elephant behavior needs
  • aclu v hazelton immigrant ordnance
  • flowering quince branch vase
  • 1600 x 1200 wallpaper
  • cleaning positons in lorain couty ohio
  • fire dance songs for winter solstice
  • half triathalon clearwater
  • dotfrank.com
  • karen waldron
  • madow.com
  • new girls aloud music video
  • are kevlar vests illegal
  • disciplinary meeting minutes
  • facebook group anthony mcclain
  • anti virus vet
  • bridgestone firestone retail and commercial operations
  • bow wow and ciara relationships
  • ancient traditional chinese clothing
  • miele boca raton fl
  • arts and crafts carribean
  • wrights disney blanket binding
  • autoloanleader-commitment.com
  • mtg exchange library and graveyard
  • arbonne louisiana
  • advantages and disadvantages of liquid coal
  • a to z alphabet poems
  • 1985 nissan boat 70 gasket
  • authentic louis vuitton epi leather verseau
  • animated birthday bunny img
  • mercuryarchive.com
  • touchstone resources uk
  • worldtrannies.net
  • encouragement for christians over 50
  • persistent binding
  • cvc excavating
  • adherence anti epileptic drugs tdm
  • herbie holmes
  • faded sindarin passages
  • 07980 stirling nj contact
  • interstate 80 between auburn and truckee
  • another denial clue
  • are old testament foods still forbidden
  • baptistlife.com
  • 96.1 fm radio holland mi
  • 1 8 th inch beveled mirror
  • fellowes 80 cd holder
  • fat cats in slc utah
  • common illnesses of infants
  • 1 cedar shingles price
  • i love you dido
  • nfcourtyard.com
  • publishers wanting unsolicited manuscripts
  • bocelli sound clips
  • contractor incentive plans
  • irs-e-file-online.net
  • bad wood pellets
  • black cat firecracker
  • ardoise carriere belgique
  • bae hugo croft
  • construction calvert county excavating
  • charles cochran
  • 348 pistons
  • 10x8 o gauge railroad layout
  • ezplay notation software
  • auctioneer newcastle
  • folded umbrella placenta
  • 400 grams codeine cough syrup
  • sexology.org
  • do irish setter lose hair
  • cutanious migrant larve
  • christian spiritual deliverance witchcraft
  • aubrey organics free shipping
  • inexpensive resonator guitars
  • language spoken in guatemala
  • dietrich 50cc extra 260 arf
  • okmarriage.org
  • vicks air purifier filters
  • daniela dilullo
  • rel strata
  • free 3d frog frenzy download
  • basketball court inbound dashed line highschool
  • turnhere.com
  • honors for tuskegee airmen
  • arkansas laser skin resurfacing
  • ace basin national wildlife refuge
  • ap released questions calculus
  • aldi ipswich
  • a great warrior has fallen lyrics
  • alpine ranches arizona
  • na.com
  • disneys high school musical activities
  • ignite wedge
  • 6 pc shelf bra
  • caliper shim
  • bat viewing on trail olympia washington
  • cold hydrogen peroxide hpv warts com
  • erick lao
  • cutejapanesexxx.net
  • billiards and barstools in arlington texas
  • bryan cunningham hopkinsville ky
  • hon 10578
  • air hogs resistor airplane remote
  • pornonkey.com
  • animal medication supplement consultant illinois
  • deloitte fast 500
  • andes a-5 clipper blades
  • conexant ma560ci driver
  • ensign propane carburetor
  • black headed gull
  • starwoodhotelshawaii.com
  • 116 club washington
  • jackpot junction nevada
  • 12 volt dc solenoid valve coils
  • grand bahia principe montego bay
  • forwardedfunnies.com
  • 12 axle trailer for sale
  • 1800 mah ni-mh rechargeable batteries
  • crawley photography georgia wedding
  • exodus 20 11
  • musketeers bar grill richfield ohio
  • girlsnew.org
  • little tykes car bed assembly instructions
  • arterial line placement
  • civil unlawful eviction san joaquin county
  • easiest college algebra class
  • residential care facilities turlock ca
  • anza california gymkhana lions field
  • 12v wall mount reading lamps
  • 191st ordnance depot co in ww2
  • bastian construction st cloud mn
  • 8 upright blue
  • carloine bonnell titanic family tree
  • emily hidalgo ricardo julie
  • 12 volt lighting transformers uk
  • cny family care
  • berthram b samuel
  • bean growers real estate kingaroy
  • 36 ounces of courage and pride
  • amerfirsthb.org
  • hammered dulcimer orlando
  • dermabest.com
  • manheim analyzers
  • discount pumpkins
  • century 21 real estate schuylkill county
  • 12 spade bit drills
  • 1984 golden state warriors
  • kenworth 007 special edition
  • freakygalleries.com
  • creating a annotated resume
  • color shaded lucite
  • bcbg max azria women shoes
  • whyislam.org
  • american contractors jana crowder
  • 8th ammendment synopsis
  • how many billion in a trillion
  • deep a cut needs stitches
  • amghp.com
  • 20 foot slides
  • bakersfield triathlon
  • siouxlandlib.org
  • airconditioning contractor in st petersburg tampa
  • century regional detention facility lynwood
  • a real napoleon dynamite costume
  • calhoun arkansas harmon
  • ashville ohio florists
  • appaloosa catfish
  • apprentice electrician job
  • dwarf washington navel orange
  • ncusar.org
  • bahama yacht charters
  • 2007 canada budget
  • 1995 ford taurus online manual
  • walgreen.com
  • big busted underwire bathing suits
  • andrew tylor macro
  • 1420 news talk
  • 60 s flower children
  • black clergy apparel
  • sampleaday.com
  • chris gibbs genealogy
  • liteon dvd drive lh-20a1p186c
  • 60 faceted round 6mm ab
  • annual report to the california legislature
  • evangelist.org
  • beware the jub jub bird lyrics
  • gunther cunningham chiefs links
  • russia.com
  • proffesional nail supplies
  • mares catamaran
  • tremont capital commodities
  • blazinmixtapes.com
  • activities for macbeth
  • 1916 pullman railroad car
  • articles on time perception
  • full psp faceplates
  • abdomen tender nausea vomiting dizzy
  • gold prospecting canada
  • hair perm fantasy
  • hr presence at termination for thief
  • apollo hvlp paint sprayers
  • chemistry lab exercises dipole
  • christine helene chritening waer
  • 8mm steyr ammo
  • dnr fashion news
  • rie tanaka
  • 1960 pontiac starchief letters on front
  • elena kiev ukraine
  • pimpmyblackteens.net
  • gianmarco lyrics una cancion de amor
  • adams law firm in katy tx
  • 1958 ten bolt differential
  • cocker spaniel breeder merle
  • al-anon book oder form
  • brazilian camilla
  • 2008 exceed-rc g2 se helicopter
  • trw irc
  • 2005 carolina hurricanes captain
  • buy forbidden city table
  • 1997 taurus towing capacity
  • brazilian mastiff black
  • eastlake city pools
  • abdur rahman al wati
  • busting online copyright thieves
  • gsx 650 f
  • a musical family legacy continues
  • earned not issued
  • blackfoot.net
  • 401k ing
  • 1005 harrison st san francisco ca
  • 3.7 phoenix replace
  • aspirin addatives
  • alien and implants and roger
  • does watching pornhub ruin your computer
  • apple computer costing systems
  • automatic mla works cited
  • allis charmer collectibles
  • counted cross stitch and bienvenue
  • reveal facebook chat
  • 108 inch wide atv trailer
  • cas abao koop
  • chinese herbs and spices
  • $1000 confederate monetary note dated 1861
  • 7.3l diesel belt routing diagram
  • four points at sheraton
  • free juicer recipes
  • all-creditscore.name
  • qantas au
  • harry potter slave fic recommend
  • cedar shingle silhouette
  • drug legalization criminalization and harm reduction
  • belleville brinkerhoff
  • alfred hitchcock memorabilia
  • coleman kerosene stoves
  • 1964 pontiac bonneville seat covers
  • 4x harley tee shirts
  • 2000 silverado switched 12v power location
  • giant squid anatomy
  • 2003 ford explorer shocks
  • discount depot dumpster
  • boy humping boy
  • adamson police supplies
  • are third degree burns the worst
  • dana 44 ez lockers
  • gao bridge allision
  • 2 controller play station usb
  • anne kennedy seneca
  • indianwells.com
  • hawley bite plane appliances
  • grand concourse station square pgh pa
  • americans in the battle of britain
  • chyxxx.com
  • dirk roberson of jenkins county georgia
  • northshore business association
  • 3.75 90 elbow
  • female underarm odor
  • cure cancer through reflexology
  • alicia silverstone vegan
  • centralair heating thermostats
  • 1125r delivery complaints
  • missouri cities with pit bull bans
  • 2009 moto guzzi norge regina
  • laughlin river motorcycle ralley
  • car cargo nets
  • 1704 bristol grand rapids
  • 6.8spc suppressor reviews
  • b767 fmc block dia
  • daiwa gc 100
  • dvd to mpeg vidio software
  • insult machine
  • 02lik.com
  • airsoft airplanes
  • discounts on u haul
  • 1 horse motors
  • list of submarines
  • manly bennett
  • mix941.fm
  • 05 honda shadow spirit battery
  • fondant dinnerware
  • gardenia flower corsage
  • rate-the-ride.com
  • an irc poker dealing program
  • creative jukebox rechargeable lithium ion battery
  • dual signatures
  • henry frenzel new ulm
  • graf 600 gloves
  • natasha bedingfield solmade
  • japan cup riva tulips
  • flypaper.net
  • mille et un soleils
  • incidence anxiety disorders australia
  • arapahoe lanes colorado
  • drew carey scars
  • darryl worley posing for playgirl
  • cabins rental maryville tn