Presentation is loading. Please wait.

Presentation is loading. Please wait.

11 Finding Winners Using Arrays Session 8.2. Session Overview  Find out how the C# language makes it easy to create an array that contains multiple values.

Similar presentations


Presentation on theme: "11 Finding Winners Using Arrays Session 8.2. Session Overview  Find out how the C# language makes it easy to create an array that contains multiple values."— Presentation transcript:

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


Download ppt "11 Finding Winners Using Arrays Session 8.2. Session Overview  Find out how the C# language makes it easy to create an array that contains multiple values."

Similar presentations


Ads by Google