For tomorrow… What does this mean? (1) Get your libraries working! (2) preliminary planning (0) Choose your libraries…
What does this mean? (1) An introduction and overview of your progress… 3P's: Presentation certainly no expectations that things are complete! but they should be further along than preliminary
Example presentation with running commentary ! feel free to use these slides as a starting point (but it's by no means required!)
this does not seem very original! inspired by the three projects using PyGame (two of which are implementing a Snake game!) Project: PySnake! I usually imagine about 1 slide per minute, but this van vary considerably… Also, this will be longer than 10-15 minutes since there are so many parenthetical comments!
My goal is at least one picture per slide PyGame: multi-platform (and means it!) Libraries Features: classes for 2d single-screen game support Fun: supports sounds and game controllers, as well… Resorting to unrelated pictures only when absolutely necessary…
No one writes programs from scratch! Start with the example! (bouncing ball program) Work Approach Tinker: learning the library requires testing it out… Plan: best done as you tinker… You can probably leave this slide out! www.pygame.org/docs/tut/intro/intro.html
Reading the FAQ and other online resources is a great place to start! Suggestions? Having a ball… This is an interesting piece of advice… who wrote this ?!?
To go from Bouncing Ball to Snake! Game Plan Data structures: There is always a set of data structures that represents your application… Describing these data structures is the application design - or your "game plan" - especially when the application is a game! Inspiration: http://www.cs.hmc.edu/~cs60grad/Spampede/ http://www.cs.hmc.edu/~cs60grad/Spampede/Spring02/btagiku6 A 2d list of cells - similar to the game of life - each of which might have a wall empty space food! [ [ 1, 1, 1, 1, 1, … ], [ 1, 0, 0, 3, 4, … ], [ 1, 0, 2, 0, 0, … ], … ] body and head
Design Where possible, include details… Challenge: How to display a gameboard cell? Thus, the game knows what to color each cell based on the gameboard's contents… empty space is 0 [ [ 1, 1, 1, 1, 1, … ], [ 1, 0, 0, 3, 4, … ], [ 1, 0, 2, 0, 0, … ], … ] food is 2 gameboard =
Details Something about the library that required some work to figure out! Challenge: How about more than one! To create a region of color, you blit an object of the Surface class Result:
Details How did these checkerboard patterns arise? 2d lists are used to create patterns of different color surfaces… Look familiar?
Walls and the Snake That snake looks like it's in trouble! The edges are set to be walls, and the snake is started in the upper left… Problems?
Snake motion It's always better to use descriptive variable names! The snake has one of five directions: NORTH = ( -1, 0 ) something's missing… SOUTH = ( +1, 0 ) WEST = ( 0, -1 ) EAST = ( 0, +1 ) STOPPED = ( 0, 0 ) This makes it easy to go diagonally in the future, if we want to!
Snake control It's always better to use descriptive variable names! Need to use the kbd NORTH = ( -1, 0 ) Crash! SOUTH = ( +1, 0 ) WEST = ( 0, -1 ) EAST = ( 0, +1 ) STOPPED = ( 0, 0 ) This makes it easy to go diagonally in the future, if we want to!
Key class It's always better to use descriptive variable names! Need to use the kbd NORTH = ( -1, 0 ) SOUTH = ( +1, 0 ) WEST = ( 0, -1 ) EAST = ( 0, +1 ) STOPPED = ( 0, 0 ) Note that capital Q is tricky to specify…
Key feature Good variable names make the code self- documenting! Response to food! Snake = [ (1,1), (1,2) ] A list keeps track of the cells in the Snake. Response to walls and other obstacles! What should happen here? Demo!
Still to go… What are you planning on implementing before the final version? Sound Need examples AI mode I don't want to take time to play the game … let's have the computer play it for me! More than simple cells of color BIGGER! Done! Not done…
ePortfolios… 1. Post your final project on your ePortfolio page in a.zip file 2. Include on the page a text description of What it does What software prerequisites it needs (libraries, Python) How to run it What you would add if you had more time about a paragraph each The 3rd P!
User Inferfaces No undo! % ls file1.txt file2.txt file3.txt ! % rm *! (long pause…)
Design for software and beyond 0. Conceptual models 1. Mapping 2.Visibility 3.Feedback 4.Affordances Don Norman's key principles:
Conceptual Models Users always bring something "to the table" these don't work! Images from The Design of Everyday Things Ony a human would think of these!
Mapping is matching expected (spatial) relationships Where to plug in the keyboard and mouse? ?
Visibility is making functionality apparent Shower? Slide projector … From: www.baddesigns.com "I used to have that awful shower controller where you pull down on the nozzle to turn it on. I had to tell every guest how to do it, and when we sold our house, we got a call from the new owners about 5 days later asking how to turn on the shower. They had been taking baths for 5 days! Unbelievable." - BL
Feedback providing information back to the user from the UI Hall of Shame Microsoft Access Microsoft Outlook http://homepage.mac.com/bradster/iarchitect/shame.htm But some of us graphics aren't so lazy!
Affordances are the functions that form suggests… Opening the XO? Door handles built-in user's manual
Where do these go wrong? Mapping How to open this gas cap? VisibilityFeedbackAffordances This handle unfastens the seat from the floor. How to turn on this stove? Set to 5 minutes? Win NT Dialog
Thinking about User Interfaces What other types of human/computer interfaces can you think of? #1 WIMPWIMP indows cons enus ointer GUI
Affordances ~ physical and cultural expectations 0. Conceptual models 1. Mapping Matching user expectations e.g., Directory structures Visibility and Feedback Banks of glass doors Slide projector Affordances The functions that form suggests! Phone settings