Download presentation
Presentation is loading. Please wait.
Published byTheodora Watts Modified over 9 years ago
1
11 Finding Winners Using Arrays Session 8.2
2
Session Overview Find out how the C# language makes it easy to create an array that contains multiple values of a particular type Learn how to work with individual values stored as part of an array Use arrays to make a program that automatically displays the winning score from the Reaction Timer game Use an array as a look-up table to identify the winning players of the Reaction Timer game Find out how the C# language makes it easy to create an array that contains multiple values of a particular type Learn how to work with individual values stored as part of an array Use arrays to make a program that automatically displays the winning score from the Reaction Timer game Use an array as a look-up table to identify the winning players of the Reaction Timer game Chapter 8.2: Finding Winners Using Arrays2
3
Reaction Timer Winner Display At the moment the players have to decide who won a Reaction Timer game They have to find the lowest button time and then work out which player had that time It would be nice if the game program could do this At the moment the players have to decide who won a Reaction Timer game They have to find the lowest button time and then work out which player had that time It would be nice if the game program could do this Chapter 8.2: Finding Winners Using Arrays3
4
Finding the Winning Score A winning score is one which is greater than 0, and less than any other score This means that the player pressed their button before anyone else We can create a condition that will test if a particular score is the winning one The program just has to compare the value with all the ones that it needs to beat A winning score is one which is greater than 0, and less than any other score This means that the player pressed their button before anyone else We can create a condition that will test if a particular score is the winning one The program just has to compare the value with all the ones that it needs to beat Chapter 8.2: Finding Winners Using Arrays4
5
Finding the Winning Score This code tests to see if button A has beaten all the other buttons on gamepad 1 To make the test for all the gamepads would require another 12 tests This code tests to see if button A has beaten all the other buttons on gamepad 1 To make the test for all the gamepads would require another 12 tests Chapter 8.2: Finding Winners Using Arrays5 if ( ascore1 > 0 ) { if ( ascore1 < bscore1 && ascore1 < xscore1 && ascore1 < yscore1 ) { // if we get here button A of Gamepad 1 has won } } if ( ascore1 > 0 ) { if ( ascore1 < bscore1 && ascore1 < xscore1 && ascore1 < yscore1 ) { // if we get here button A of Gamepad 1 has won } }
6
The C# Array To solve this problem we need another way of accessing data We need a way that a program can work through a list of score values and find the smallest one that is the winner In computer language terms we need to use an array We know that computers can work with very large amounts of data, now we are going to find out how To solve this problem we need another way of accessing data We need a way that a program can work through a list of score values and find the smallest one that is the winner In computer language terms we need to use an array We know that computers can work with very large amounts of data, now we are going to find out how Chapter 8.2: Finding Winners Using Arrays6
7
Creating a “One Dimensional” Array An array is declared like any other variable The [] characters (square brackets) are very important The above array is called scores and it has been created with a capacity of 4 values The array is of type int, i.e. it can hold 4 integers We can create arrays of any type we like An array is declared like any other variable The [] characters (square brackets) are very important The above array is called scores and it has been created with a capacity of 4 values The array is of type int, i.e. it can hold 4 integers We can create arrays of any type we like Chapter 8.2: Finding Winners Using Arrays7 int[] scores = new int[4];
8
Visualizing the Array You can visualize an array as a row of numbered boxes In the case of the scores array there are four such boxes, each of which can hold a single integer The first box in the row has the number 0, the last box has the number 3 You can visualize an array as a row of numbered boxes In the case of the scores array there are four such boxes, each of which can hold a single integer The first box in the row has the number 0, the last box has the number 3 Chapter 8.2: Finding Winners Using Arrays8
9
Arrays and Elements Each box in the array is called an element When an integer array is created all the elements are initialized to the value 0 A C# program can read and write the values in the elements in an array Each box in the array is called an element When an integer array is created all the elements are initialized to the value 0 A C# program can read and write the values in the elements in an array Chapter 8.2: Finding Winners Using Arrays9
10
Using a Subscript to Access an Element A program can access a particular element by using a subscript value The subscript is given in square brackets, as shown above A program can access a particular element by using a subscript value The subscript is given in square brackets, as shown above Chapter 8.2: Finding Winners Using Arrays10 scores[1] = 99;
11
Falling Off the End of the Array An attempt to access an array element that does not exist will cause the program to fail with an exception Chapter 8.2: Finding Winners Using Arrays11 scores[4] = 99;
12
Storing Reactions Scores in an Array This code replaces the variable ascore1 with the element at the start of the scores array We can do this for all the other score values in the game, so that the time values are all held in the scores array This code replaces the variable ascore1 with the element at the start of the scores array We can do this for all the other score values in the game, so that the time values are all held in the scores array Chapter 8.2: Finding Winners Using Arrays12 if (oldpad1.Buttons.A == ButtonState.Released && pad1.Buttons.A == ButtonState.Pressed && scores[0] == 0) { scores[0] = timer; } if (oldpad1.Buttons.A == ButtonState.Released && pad1.Buttons.A == ButtonState.Pressed && scores[0] == 0) { scores[0] = timer; }
13
Storing the Scores in an Array After a game has been played we might have a set of results as shown above We now need to create some C# code that will find the winning score We need to find the smallest score value which is greater than zero After a game has been played we might have a set of results as shown above We now need to create some C# code that will find the winning score We need to find the smallest score value which is greater than zero Chapter 8.2: Finding Winners Using Arrays13
14
An Algorithm to Find the Winning Score “Look at each element in the array in turn. If the element contains a “better” value than the one you presently have, that is now the new best value” This is what you actually did when you worked out the answer If you had to do this for 10,000 score values you would write down the best value you had seen so far, so that you didn’t forget it and have to start again “Look at each element in the array in turn. If the element contains a “better” value than the one you presently have, that is now the new best value” This is what you actually did when you worked out the answer If you had to do this for 10,000 score values you would write down the best value you had seen so far, so that you didn’t forget it and have to start again Chapter 8.2: Finding Winners Using Arrays14
15
Using a For Loop to Find the winner This loop will find the winning score value It will work for any sized array This loop will find the winning score value It will work for any sized array Chapter 8.2: Finding Winners Using Arrays15 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
16
Creating Our “Highest So Far” Winning Value Create a variable to hold the winning score Set it to a very large value which is not a winner Create a variable to hold the winning score Set it to a very large value which is not a winner Chapter 8.2: Finding Winners Using Arrays16 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
17
Declaring and Setting Up Our Loop Counter C# lets you declare and initialize a variable to be used as a loop counter in a single statement Chapter 8.2: Finding Winners Using Arrays17 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
18
Checking the End Condition of the Loop If we try to use the subscript 4 the program will throw an exception, so the loop must stop when i reaches 4 Chapter 8.2: Finding Winners Using Arrays18 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
19
Moving on to the Next Element Once we have tested one element we need to move on to the next one in the array Chapter 8.2: Finding Winners Using Arrays19 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
20
Test for a Valid Score Only score values greater than 0 are valid Less than 0 means the button was pressed early Only score values greater than 0 are valid Less than 0 means the button was pressed early Chapter 8.2: Finding Winners Using Arrays20 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
21
Test for a Winning Score If this score value is less than the present winner then we have a new winning value Chapter 8.2: Finding Winners Using Arrays21 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
22
Updating the Winning Score If we have a new winner, store it in the winningValue variable Chapter 8.2: Finding Winners Using Arrays22 int winningValue = 120; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; } } }
23
Identifying the Winning Player At the moment the program just works out the winning score It does not say which button achieved that score The program must display the winner as well This means that it must “remember” the position in the array of the winning score value We can then use this position to identify the winning player At the moment the program just works out the winning score It does not say which button achieved that score The program must display the winner as well This means that it must “remember” the position in the array of the winning score value We can then use this position to identify the winning player Chapter 8.2: Finding Winners Using Arrays23
24
Storing the Winner Subscript The value of i for a high score is stored in winnerSubscript Chapter 8.2: Finding Winners Using Arrays24 int winningValue = 120; int winnerSubscript = 0; for (int i = 0; i 0) { if (scores[i] < winningValue) { winningValue = scores[i]; winnerSubscript = i; } } }
25
Identifying the Winner Using a Look-Up Table We now have code that will find out the position in the scores array of the winning score We can create a second array which lets the program look up the name of button that generated this score The names array is an array of strings Each element holds the name of a button We now have code that will find out the position in the scores array of the winning score We can create a second array which lets the program look up the name of button that generated this score The names array is an array of strings Each element holds the name of a button Chapter 8.2: Finding Winners Using Arrays25
26
Declaring a Look-Up Table The names array is an array of strings which are pre-set with the button names The C# compiler can work out how many elements are being created, so there is no need to set the size of the names array The text lines up with the elements in scores The names array is an array of strings which are pre-set with the button names The C# compiler can work out how many elements are being created, so there is no need to set the size of the names array The text lines up with the elements in scores Chapter 8.2: Finding Winners Using Arrays26 string[] names = new string[] { "Gamepad 1 A", "Gamepad 1 B", "Gamepad 1 X", "Gamepad 1 Y" }; string[] names = new string[] { "Gamepad 1 A", "Gamepad 1 B", "Gamepad 1 X", "Gamepad 1 Y" };
27
Displaying the Winner This code sets a string variable in the game world called winnerName to the name of the winner If there are no winners (nobody pressed their button) the string is set to “No Winner” The string is displayed by the Draw method This code sets a string variable in the game world called winnerName to the name of the winner If there are no winners (nobody pressed their button) the string is set to “No Winner” The string is displayed by the Draw method Chapter 8.2: Finding Winners Using Arrays27 if (winningValue != 120) { winnerName = names[winnerSubscript]; } else { winnerName = "**NO WINNER**"; }
28
Timing the Game play The game will display the winner two seconds after the sound effect was played Code in the Update method can test for the timer value reaching 120 and trigger the code that finds the winning score and sets it for display The game will display the winner two seconds after the sound effect was played Code in the Update method can test for the timer value reaching 120 and trigger the code that finds the winning score and sets it for display Chapter 8.2: Finding Winners Using Arrays28 if (timer == 120) { // find the winning score // set the variable winnerName to the winner } if (timer == 120) { // find the winning score // set the variable winnerName to the winner }
29
1. Reaction Timer with Winner Chapter 8.2: Finding Winners Using Arrays29 This version of the reaction timer game uses the algorithm described above The name of the winner is displayed This version of the reaction timer game uses the algorithm described above The name of the winner is displayed
30
Summary A C# array allows a programmer to create a single variable that holds a large number of items of a particular type Each item in an array is called an element, and particular elements are identified by means of a subscript value In an array of size n, the subscript values range from 0 to n-1 Attempts to use an invalid subscript value will cause a program to throw an exception A C# array allows a programmer to create a single variable that holds a large number of items of a particular type Each item in an array is called an element, and particular elements are identified by means of a subscript value In an array of size n, the subscript values range from 0 to n-1 Attempts to use an invalid subscript value will cause a program to throw an exception Chapter 8.2: Finding Winners Using Arrays30
31
True/False Revision Quiz An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. Chapter 8.2: Finding Winners Using Arrays31
32
True/False Revision Quiz An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. Chapter 8.2: Finding Winners Using Arrays32
33
True/False Revision Quiz An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. Chapter 8.2: Finding Winners Using Arrays33
34
True/False Revision Quiz An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. Chapter 8.2: Finding Winners Using Arrays34
35
True/False Revision Quiz An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. Chapter 8.2: Finding Winners Using Arrays35
36
True/False Revision Quiz An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. An array holds a collection of values of a particular type. The first element in an array has the subscript value 1. A given array can hold any number of values. Arrays can be pre-set with values when they are created. A program will throw an exception if a program uses an invalid subscript value. Chapter 8.2: Finding Winners Using Arrays36
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.