Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 10 Arrays and Tile Mapping Starting Out with Games & Graphics in C++ Tony Gaddis
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics 1-2 Concept: In the programs you have designed so far, you have used variables to store data in memory. The simplest way to store a value in memory is to store it in a variable. Variables work well in many situations, but they have limitations.
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics Variables can only hold one value at a time –Not well suited for storing and processing sets of data –Must be declared and individually processed Arrays are specifically designed for storing and processing sets of data –Named storage location in memory, like variables –Can hold a group of values, unlike variables –All values must be of the same data type –Cannot store a mixture of data types Number inside braces is called the size declarator –Specifies the number of values that the array can hold An arrays size cannot be changed while the program is running –Named constants make array sizes easier to maintain 1-3
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics The storage locations in arrays are known as elements –Located in consecutive memory locations Each element in an array is assigned a unique number called a subscript –Used to identify specific elements in an array –First element is assigned the subscript 0 –Second element is assigned the subscript 1 –And so forth 1-4 Array Elements and Subscripts Figure 10-1 Array subscripts
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics You access the individual elements in an array by using their subscripts 1-5 Assigning Values to Array Elements Figure 10-2 Values assigned to each element
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics The C++ language does not perform array bounds checking –Array subscript values are not checked by the compiler 1-6 No Array Bounds Checking in C++
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics Step through an entire array, performing the same operation on each element 1-7 Using a Loop to Step through an Array
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics You can optionally initialize an array with values when you declare it The series of values separated with commas and enclosed in curly braces is called an initialization list –Values are stored in the array elements in the order they appear in the list 1-8 Array Initialization Implicit Array Sizing
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics Passing an array as an argument typically requires two arguments –The array itself –An integer specifying the number of elements in the array 1-9 Passing an Array as an Argument to a Function
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics Compare two arrays with a loop that steps through both arrays, comparing their corresponding elements 1-10 Comparing Two Arrays
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics To shuffle an array means to randomly rearrange its contents –For each element in the array –Randomly select another element –Swap the contents of this element with the randomly selected element 1-11 Shuffling an Array
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics To successfully swap the contents of two variables, we need a third variable to serve as a temporary storage location 1-12 Swapping Array Elements
Copyright © 2010 Pearson Addison-Wesley 10.1 Array Basics When you process a partially filled array: –Process only the elements that contain valid items –Use an integer variable that holds the number of items in the array –Increment the integer variable each time we add an item to the array 1-13 Partially Filled Arrays
Copyright © 2010 Pearson Addison-Wesley 10.2 Sorting Arrays 1-14 Concept: A sorting algorithm rearranges the contents of an array so they appear in a specific order. The selection sort is a specific example of a sorting algorithm.
Copyright © 2010 Pearson Addison-Wesley 10.2 Sorting Arrays Many programming tasks require that data in an array be sorted in some order A sorting algorithm is a technique for stepping through an array and rearranging its contents in some order –Ascending order means from lowest to highest –Descending order means from highest to lowest We will examine the selection sort algorithm –Smallest value is moved to element 0 –Next smallest value is moved to element 1 –Process continues until all of the elements are in proper order 1-15 Figure Values in an array
Copyright © 2010 Pearson Addison-Wesley 10.2 Sorting Arrays 1-16 Figure Values in the array after the first swapFigure Values in the array after the second swap Figure Values in the array after the third swapFigure Values in the array after the fourth swap Figure Values in the array after the fifth swap
Copyright © 2010 Pearson Addison-Wesley 10.2 Sorting Arrays 1-17
Copyright © 2010 Pearson Addison-Wesley 10.3 Two-Dimensional Arrays 1-18 Concept: A two-dimensional array is like several identical arrays put together. It is useful for storing multiple sets of data.
Copyright © 2010 Pearson Addison-Wesley 10.3 Two-Dimensional Arrays Two-dimensional arrays are useful for working with multiple sets of data Think of a two-dimensional array as having rows and columns of elements 1-19 Figure A two-dimensional array
Copyright © 2010 Pearson Addison-Wesley 10.3 Two-Dimensional Arrays To declare a two-dimensional array, two size declarators are required: –The first one is for the number for the rows –The second one is for the number of columns 1-20 Declaring a Two-Dimensional Array Figure Subscripts for each element of the values array When processing data, each element has two subscripts: –One for its row –Another for its column
Copyright © 2010 Pearson Addison-Wesley 10.3 Two-Dimensional Arrays To access the elements in a two-dimensional array, you must use both subscripts 1-21 Accessing the Elements in a Two-Dimensional Array Figure Output of Program Figure Number stored in the values array in example output of Program 10-12
Copyright © 2010 Pearson Addison-Wesley 10.3 Two-Dimensional Arrays When initializing a two-dimensional array, it helps visually to enclose each rows values in a set of braces 1-22 Initializing a Two-Dimensional Array Figure Initialization of the numbers array
Copyright © 2010 Pearson Addison-Wesley 10.3 Two-Dimensional Arrays When a two-dimensional array is passed to a function, the parameter must contain a size declarator for the number of columns 1-23 Passing a Two-Dimensional Array to a Function
Copyright © 2010 Pearson Addison-Wesley 10.4 Tile Maps 1-24 Concept: Tiles are small rectangular images that are commonly used to construct the background imagery in a game. A tile map is a two- dimensional array that specifies tiles and their locations on the screen.
Copyright © 2010 Pearson Addison-Wesley 10.4 Tile Maps Tiles are small rectangular images that can be put together to form a larger image Used in early video games, still used by many game programmers today –Memory efficient –Increase performance 1-25 Figure A tile-based image
Copyright © 2010 Pearson Addison-Wesley 10.4 Tile Maps Images are constructed using only a few tiles –Most are duplicates 1-26 Figure Tiles
Copyright © 2010 Pearson Addison-Wesley 10.4 Tile Maps A tile map is an array that maps the location of each tile on the screen –Each element holds the image number of the tile –Rows and columns of the tile map correspond to rows and columns on the screen. 1-27
Copyright © 2010 Pearson Addison-Wesley 10.4 Tile Maps A function is needed to display the tiles on the screen 1-28
Copyright © 2010 Pearson Addison-Wesley 10.4 Tile Maps You can display layered sets of tiles by using two tile maps –One for background –Another for obstacles 1-29 Displaying Layered Sets of Tiles
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 10 Arrays and Tile Mapping QUESTIONS ?