Guide to Programming with Python Chapter Twelve Sound, Animation, and Program Development: The Astrocrash Game.

Slides:



Advertisements
Similar presentations
Games in Python – the easy way
Advertisements

GAME:IT Junior Paddle Ball Objectives: Review skills from Introduction Create a background Add simple object control (up and down) Add how to create a.
GAME:IT Junior Ping Pong Objectives: Review skills from previous lessons Create a 2-player game Create a scoring display system Using old and new skills,
Introduction to Macromedia Director 8.5 – Lingo
Using Multimedia on the Web Enhancing a Web Site with Sound, Video, and Applets.
CNIT 132 – Week 9 Multimedia. Working with Multimedia Bandwidth is a measure of the amount of data that can be sent through a communication pipeline each.
Asteroids Games and Simulations O-O Programming in Java The Walker School The Walker School – Games and Simulations
Greenfoot Asteroids Mrs. C. Furman August 16, 2010.
Code Club Session 3 Shark Eats Fish. Picture of finished product here.
This game is loosely based on the Whack-A- Mole arcade game.  Each game starts with 45 seconds of play.  Moles randomly pop out of holes on the landscape.
1 Flash Actionscript Animation. 2 Introduction to Sprites We will now look at implementing Sprites in Flash. We should know enough after this to create.
Game Design and Programming. Objectives Classify the games How games are design How games are implemented What are the main components of a game engine.
GAME:IT Junior Bouncing Ball Objectives: Create Sprites Create Sounds Create Objects Create Room Program simple game.
GameMaker.  A lot of Different Definitions  Easier to Say What is NOT a Game  Movie is Not a Game  No Active Participation  Final Outcome is Fixed.
Fundamentals of Python: From First Programs Through Data Structures
2 What is pyGame? A set of Python modules to make it easier to write games. –home page: –documentation:
Guide to Programming with Python
Fundamentals of Python: First Programs
Creative Commons Attribution 3.0 creativecommons.org/licenses/by/3.0 Key Abstractions in Game Maker Foundations of Interactive Game Design Prof. Jim Whitehead.
GREENFOOT CLUB RESOURCES Brian Cullen – Rossett School
Introduction to TouchDevelop
GAME:IT Bouncing Ball Objectives: Create Sprites Create Sounds Create Objects Create Room Program simple game.
VIDEO GAME PROGRAMMING Video Game Programming Level One – Breakout INSTRUCTOR Big Dan Teague TEACHER’S ASSISTANT Delmar O'Donnell.
We will be creating a spaceship that simulates real movements in space. The spaceship will fire a laser beam that can destroy targets. The spaceship will.
KeyListener and Keyboard Events Just as we can implement listeners to handle mouse events, we can do the same for keyboard events (keypresses) –to implement.
1 Computer Science of Graphics and Games MONT 105S, Spring 2009 Session 23 Game Graphics II.
Art 315 Lecture 5 Dr. J. Parker AB 606. Last time … We wrote our first program. We used a tool called GameMaker. The program we wrote causes a ball to.
KeyListener and Keyboard Events Another type of listener listens for keyboard entry – the KeyListener which generates KeyEvents –to implement KeyListener,
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 7 The Game Loop and Animation Starting Out with Games & Graphics.
11 Adding Tomato Targets Session Session Overview  We now have a game which lets a player bounce a piece of cheese on a bread bat  Now we have.
GAME:IT Helicopter Objectives: Review skills in making directional sprites Create objects that shoot and destroy for points Create random enemies on the.
Learning Unity. Getting Unity
Game Maker Terminology
AD 305 Electronic Visualization I : School of Art and Design : University of Illinois at Chicago : Spring 2007 Intro to Action Script 9 "The games of a.
Shooters in GameMaker J Parker.
Guide to Programming with Python Week 15 Chapter Twelve Sound, Animation, and Program Development: The Astrocrash Game.
Creating a Simple Game in Scratch Barb Ericson Georgia Tech June 2008.
Carlotta Eaton New River Community College 1 Game Maker Demonstration Carlotta Eaton Professor of Information Technology New River Community College IT.
AD 206 Intermediate CG : School of Art and Design : University of Illinois at Chicago : Spring 2009 Intro to Action Script 9 "The games of a people reveal.
Game Maker Galactic Mail Advanced Group: Complete Galactic Mail, then start developing an independent project.
Game Maker Tutorial.
Warlords Patrick Levoshko SE 558 – Multiplayer Game Design.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 4: Events Programming with Alice and Java First Edition by John Lewis.
Today we are learning to: Understand how actions and events control our game. Completing the catch the clown game – making a room – adding music Gather.
Zack Russ.   A simple platform game using pygame.  Player collects jewels and progresses through the levels. A Platformer.
Game Project 1 Homage to Pong. Project Rules: The primary project is Pong, the design and development of which will be discussed in detail here. If you.
1 Computer Science of Graphics and Games MONT 105S, Spring 2009 Session 25 Game Graphics--Text and Animation.
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Starting Out with Games & Graphics in C++ Tony Gaddis Chapter 8 The.
Galactic Mail Part 2. Winning and Losing Exploding Asteroids Including Scoring Adding Levels And more.
Game Maker Evil Clutches.
Evil Clown – Quiz 1 Gamemaker Quiz 1. Set up your file Save all finished work to your desktop Final file should be called: “yourlastname_evilclown” Open.
GAME:IT Junior Paddle Ball Objectives: Review skills from Introduction Create a background Add simple object control (up and down) Add how to create a.
GAME:IT Paddle Ball Objectives: Review skills from Introduction Create a background Add simple object control (up and down) Add how to create a simple.
PyGame - Unit 4 PyGame Unit – Object Oriented Programming OOP.
Tank Game Part 2 of 6. Firing Shells Coming up… Players Scores Large Explosions Small Explosions Damage Health Bars Parent Shell Destructible Walls Reappear.
The Stingray Example Program CMT3311. Stingray - an example 2D game May be useful as a simple case study Most 2D games need to solve generic problems.
Creating a Simple Game in Scratch Barb Ericson Georgia Tech May 2009.
AD 206 Intermediate CG : School of Art and Design : University of Illinois at Chicago : Spring 2009 Intro to Action Script 11 "The games of a people reveal.
9. Media (sound effects, music, video) Let’s Learn Saengthong School, June – August 2016 Teacher: Aj. Andrew Davison, CoE, PSU Hat Yai Campus
Game Maker Tutorials Introduction Clickball IntroductionClickball Where is it? Shooting Where is it?Shooting.
Review Scene Management (Scene, Layer, Director) Sounds Menus Sprites & Actions.
Sprites (Images) and Sounds
Sound and more Animations
PYGAME.
Keyboard Input.
Intro CS – Keyboard and mouse input
Game Engines By James Tedder.
Competitive Multiplayer Game
CSC 221: Introduction to Programming Fall 2018
Chapter 7 The Game Loop and Animation
Presentation transcript:

Guide to Programming with Python Chapter Twelve Sound, Animation, and Program Development: The Astrocrash Game

Guide to Programming with Python2 Objectives Read the keyboard Play sound files Play music files Create animations Develop a program by writing progressively more complete versions of it

Guide to Programming with Python3 The Astrocrash Game Figure 12.1: Sample run of the Astrocrash game The player controls a spaceship and blasts asteroids.

Guide to Programming with Python4 The Astrocrash Game (continued) Figure 12.2: Sample run of the Astrocrash game If an asteroid hits the player’s ship, the game is over.

Guide to Programming with Python5 Reading the Keyboard Reading keystrokes is different from string input through raw_input() function games module has facilities for reading individual keystrokes for typical game input

Guide to Programming with Python6 The Read Key Program Figure 12.3: Sample run of the Read Key program The ship moves around the screen based on keystrokes.

Guide to Programming with Python7 Testing for Keystrokes class Ship(games.Sprite): """ A moving ship. """ def update(self): """ Move ship based on keys pressed. """ if games.keyboard.is_pressed(games.K_w): self.y -= 1 if games.keyboard.is_pressed(games.K_s): self.y += 1 if games.keyboard.is_pressed(games.K_a): self.x -= 1 if games.keyboard.is_pressed(games.K_d): self.x += 1

Guide to Programming with Python8 Testing for Keystrokes (continued) keyboard object from the games module –Test for specific keystrokes –is_pressed() method, returns True if the key being tested for is pressed, and False otherwise Read Key program tests for W, S, A, and D keys –W key is pressed, decrease object’s y property by 1 –S key is pressed, increase object’s y property by 1 –A key is pressed, decrease object’s x property by 1 –D key is pressed, increase object’s x property by 1

Guide to Programming with Python9 Testing for Keystrokes (continued) games module has set of key constants –All begin with games.K_ –Alphabetic keys end in lowercase key letter K_a for A –Numeric keys end in number K_1 for 1 –Complete list of keyboard constants in Appendix A

Guide to Programming with Python10 Rotating a Sprite Can set sprite angle Can rotate sprites

Guide to Programming with Python11 The Rotate Sprite Program Figure 12.4: Sample run of the Rotate Sprite program The ship can rotate or jump to a predetermined angle.

Guide to Programming with Python12 The Rotate Sprite Program (continued) class Ship(games.Sprite): """ A rotating ship. """ def update(self): """ Rotate based on keys pressed. """ if games.keyboard.is_pressed(games.K_RIGHT): self.angle += 1 if games.keyboard.is_pressed(games.K_LEFT): self.angle -= 1

Guide to Programming with Python13 The Rotate Sprite Program (continued) if games.keyboard.is_pressed(games.K_1): self.angle = 0 if games.keyboard.is_pressed(games.K_2): self.angle = 90 if games.keyboard.is_pressed(games.K_3): self.angle = 180 if games.keyboard.is_pressed(games.K_4): self.angle = 270

Guide to Programming with Python14 Using a Sprite’s angle Property Sprite angle property represents facing in degrees In Rotate Sprite program –Right arrow key is pressed, increase angle by 1 –Left arrow key is pressed, decrease angle by 1 –1 key is pressed, angle set to 0 –2 key is pressed, angle set to 90 –3 key is pressed, angle set to 180 –4 key is pressed, angle set to 270

Guide to Programming with Python15 Creating an Animation Animation: A sequence of images (frames) displayed in succession Frame: A single image in a sequence of images for an animation Animation class for animations

Guide to Programming with Python16 The Explosion Program Figure 12.5: Sample run of the Explosion program An explosion animates at the center of the graphics window.

Guide to Programming with Python17 Examining the Explosion Images Figure 12.6: Explosion images Shown in succession, the nine frames look like an explosion.

Guide to Programming with Python18 Creating a List of Image Files explosion_files = ["explosion1.bmp", "explosion2.bmp", "explosion3.bmp", "explosion4.bmp", "explosion5.bmp", "explosion6.bmp", "explosion7.bmp", "explosion8.bmp", "explosion9.bmp"]

Guide to Programming with Python19 Creating an Animation Object explosion = games.Animation(images=explosion_files, x=games.screen.width/2, y=games.screen.height/2, n_repeats = 0, repeat_interval = 5) games.screen.add(explosion)

Guide to Programming with Python20 Creating an Animation Object (continued) Animation class derived from Sprite Animation constructor takes list of image file names as strings or a list of image objects n_repeats number of times animation displayed –0 means loop forever repeat_interval delay between images –Increase number for slower animation –Decrease number for faster animation

Guide to Programming with Python21 Working with Sound and Music Sound and Music –Load –Play –Loop –Stop

Guide to Programming with Python22 The Sound and Music Program Figure 12.7: Sample run of the Sound and Music program The program lets the user play a sound and some music.

Guide to Programming with Python23 Working with Sounds Can create sound object by loading a WAV file The WAV format is great for sound effects

Guide to Programming with Python24 Loading a Sound missile_sound = games.load_sound("missile.wav") load_sound() function –Takes a string for name of the sound file, returns sound object –Can only load WAV files

Guide to Programming with Python25 Playing a Sound missile_sound.play() play() method plays sound once Playing a sound –Requires at least one open sound channel –Takes up one of the eight available sound channels –Has no effect if all eight sound channels are in use

Guide to Programming with Python26 Looping a Sound missile_sound.play(-1) play() can take value for looping Value is number of additional times sound should be played after initial playing Pass -1 to loop forever

Guide to Programming with Python27 Stopping a Sound missile_sound.stop() stop() method stops sound on all channels it’s playing Calling stop() while sound not playing will not produce error

Guide to Programming with Python28 Working with Music Music is handled somewhat differently than sound Only one music channel Don’t create a new object for each music file; instead, access a single object to load, play, and stop music Music channel accepts many different types of sound files, including WAV, OGG, MP3, and MIDI

Guide to Programming with Python29 Loading Music games.music.load("theme.mid") music object has methods to load, play, and stop the single music track Loading music track replaces current track

Guide to Programming with Python30 Playing Music games.music.play() play() plays currently loaded music If pass no value to play(), music plays once

Guide to Programming with Python31 Looping Music games.music.play(-1) play() can take value for looping Value is number of additional times sound should be played after initial playing Pass -1 to loop forever

Guide to Programming with Python32 Stopping Music games.music.stop() stop() method stops music from playing Calling stop() while music not playing will not produce error

Guide to Programming with Python33 Planning the Astrocrash Game Write progressively more complete versions List details –Features –Classes –Assets

Guide to Programming with Python34 Game Features Ship rotate and thrust based on keystrokes Ship fire missiles based on a keystroke Asteroids float at different velocities on the screen; smaller asteroids generally have higher velocities than larger ones Ship, missiles, and asteroids “wrap around” screen Missile collides with ship or asteroid, both destroyed and produce explosion Ship collides with asteroid, both destroyed and produce explosion Large asteroid destroyed, two medium asteroids produced

Guide to Programming with Python35 Game Features (continued) Medium asteroid destroyed, two small asteroids produced Small asteroid destroyed, no new asteroids produced Ship destroyed, game over Player earns points for asteroids destroyed; smaller asteroids worth more than larger ones Player’s score displayed in upper-right corner of screen All asteroids destroyed, larger wave of asteroids produced

Guide to Programming with Python36 Game Classes Ship Missile Asteroid Explosion

Guide to Programming with Python37 Game Assets Image file for ship Image file for missiles Three image files, one for each size of asteroid Series of image files for explosion Sound file for thrusting of ship Sound file for firing of missile Sound file for explosion Music file for the theme

Guide to Programming with Python38 Creating Asteroids The Astrocrash01 Program –Create eight asteroids at random locations –Velocity of asteroid is random; smaller asteroids have potential to move faster than larger ones –Could have chosen to start differently (with player ship, for example) –Key is to build progressively more complete versions

Guide to Programming with Python39 The Astrocrash01 Program Figure 12.8: Sample run of the Astrocrash01 Program Eight asteroids float along in space.

Guide to Programming with Python40 Rotating the Ship The Astrocrash02 Program –Create ship at center of the screen –Player can rotate ship –Player presses Right Arrow key, ship rotates clockwise –Player presses Left Arrow key, ship rotates counterclockwise

Guide to Programming with Python41 The Astrocrash02 Program Figure 12.9: Sample run of the Astrocrash02 Program Player can rotate the ship.

Guide to Programming with Python42 Moving the Ship The Astrocrash03 Program –Player presses Up Arrow to engage ship’s engine; applies thrust to ship in facing-direction –Engaging engine produces sound effect

Guide to Programming with Python43 The Astrocrash03 Program Figure 12.10: Sample run of the Astrocrash03 Program Player can now engage ship’s engines and thrust around screen.

Guide to Programming with Python44 Firing Missiles The Astrocrash04 Program –Player presses the spacebar, fires missile –Missile created in front of ship’s cannon and flies off in direction ship facing –Omit collision detection for now –Problem: if player holds down the spacebar, stream of missiles pours out at rate of 50/second –Fix problem in future version

Guide to Programming with Python45 The Astrocrash04 Program Figure 12.11: Sample run of the Astrocrash04 Program Ship’s firing rate is too rapid.

Guide to Programming with Python46 Controlling the Missile Fire Rate The Astrocrash05 Program –Limit fire rate by creating countdown that forces delay between missile firings –Once the countdown ends, player can fire again

Guide to Programming with Python47 The Astrocrash05 Program Figure 12.12: Sample run of the Astrocrash05 Program Ship fires missiles at a more reasonable rate.

Guide to Programming with Python48 Handling Collisions The Astrocrash06 Program –Missile collides with other object, destroys self and other –Ship collides with asteroid, destroys self and asteroid –Asteroids passive; don’t want overlapping asteroids to destroy each other –Asteroids destroyed can produce new asteroids –Problem: because asteroids initially generated at random locations, possible for one to be created on top of ship, destroying ship just as program begins –Fix problem in future version

Guide to Programming with Python49 The Astrocrash06 Program Figure 12.13: Sample run of the Astrocrash06 Program Ship’s missiles destroy asteroids and asteroids destroy ship.

Guide to Programming with Python50 Adding Explosions The Astrocrash07 Program –Add explosions as result of collisions –Remove redundant code

Guide to Programming with Python51 The Astrocrash07 Program Figure 12.14: Sample run of the Astrocrash07 Program Destruction now accompanied by fiery explosions.

Guide to Programming with Python52 Adding Levels, Scorekeeping, and Theme Music The Astrocrash08 Program –Add levels; when player destroys all asteroids, a new, more plentiful batch produced –Add scorekeeping functionality –Add theme music –Reorganize some code

Guide to Programming with Python53 The Astrocrash08 Program Figure 12.15: Sample run of the Astrocrash08 Program Final version of the game

Guide to Programming with Python54 Summary keyboard object provides access to keyboard keyboard.is_pressed() tests if specific key is being pressed games module defines set of key constants sprite objects have angle property that represents an object’s orientation in degrees Animation is a subclass of Sprite for graphics objects that are series of images shown in succession

Guide to Programming with Python55 Summary (continued) Animation object has properties for a set of images to cycle through, current image, speed, orientation, and overlapping objects, among others games.load_sound() loads a sound stored in a WAV file and returns a sound object sound object has play() method that plays sound sound object has a stop() method that stops sound music object provides access to single music track

Guide to Programming with Python56 Summary (continued) music. load() loads music track music.play() plays current music track music.stop() stops current music track After creating design, writing progressively more complete versions of program is one strategy for large projects Astrocrash, based on classic game, is written in eight successively more complete versions