Bowling Stat App

bowling_stats.aia (7.8 KB)

I have a bowling app that we are creating in my app development class.....it is going to be used by our high school bowling team.

Our students working on the app are in need of the following guidance:

  1. We have 2 groups of 4 that bowl vs 2 groups of 4 of another team.. The lowest score is dropped from each each team and a winner of each match is determined.
  2. they will bowl a 2nd match either same bowlers or subbed in bowlers to determine winner of these matches.
  3. Then we go to a bakers match where it is 5 of our bowlers vs 5 of the other team. Each bowler gets 2 frames. (bowler 1 gets 1st/6th, etc..). Then the two bakers games winners are tracked with the games above.
  4. Finally, we have total pins from all matches.

The students seem to be on the right track but any guidance as to a setup or examples would be very helpful and much appreciated.

Do you have a decision tree? Build one using If..then..else statements ) Programming Your App to Make Decisions ). To build your tree, do it on a piece of paper first, using the appropriate statistics your app accumulates. I would begin using a fictitious data set and set up the equations; then assign variables to the parts (set the variables to the appropriate fictitious value; then test your algorithm. If testing shows identical results you got the correct model. Now write the code to populate the variables in your actual app.

Build this in several parts. Collect the #1 data.
Get results of #2
Attempt #3. What does "two bakers games winners are tracked with the games above." mean?

#4 this means that you do something with respect to the total pins from all matches. What does total pins from all matches mean?

You do see the need for a specific decision tree? The developer(s) need to use that tree to design the app that collects data.

Perhaps someone will provide more specific advice. If you can do the necessary calculations on a piece of paper, you can program the algorithms required. :slight_smile:

1 Like

Is that a total of 8 bowlers?

So the group vs group combinations are 2 * 2 = 4 matches, with each match consisting of one group from one team vs one group from the other team?

Thanks for replies:

Here is a sample of our scoresheet with results. Does this help answer the guide I am looking for? There are a total of 7 games:

  1. 4 regular games (each team has a set of 4 bowlers that compete against each other) Lowest score is dropped from each team so only 3 scores count.

  2. 2 baker games
    These are where 5 bowlers from each team bowl. Each bowler has 2 frames. Bowler 1 bowls frame 1 and 5. Bowler 2 bowls frames 2 and 6. Bowler 3 bowls frames 3 and 7...so on. Team games vs individual.

  3. Total pins (pins from each of the bowled games to see which teams knocks down the most)

sk_1_19_22.pdf (36.1 KB)

Getting there.

Can you explain this scoring, especially the special characters 'x', '/', '-' ?
Capture

For our bakers….I was keeping track of the marks by frame. Let me know if this makes sense.

x—strike

7/--means the first ball was a 7 and then a spare (knocking down all pins)

XX9 (means 2 strikes and a 9) as it is the 10th frame.

8—1 means 8 pints and then only knocks down 1 of them.

I set up a set of sheets to show how to normalize your data, to allow use of SQL-like SELECT, SUM and GROUP BY queries:

(I did not have patience to copy all of your data. I did enough to show how the sheets are linked by ROWID.)

Each sheet has column 1 set aside for the formula '=ROW()' so that it would populate with unique keys in column 1, for use in lookups by other sheets. This is useful only for cases where there will never be deletion of rows, like scorekeeping.

This the Matches sheet, with one row per match:
Capture

This saves us from having to duplicate location and date to other sheets, and is a place where we can add columns with summary scores later.

To save retyping, I included a sheet of player names, and their team names for particular matches. The match number is needed because a player might switch teams between matches.
Capture

Notice how the MatchRowID point back to the ROWID in the Matches sheet for that match.

This is the EliminationMatchGames summary sheet, with one row per elimination game:


(I stopped at the third elimination game.)
Note how the MatchID is needed to point back to the match.
The TeamGame Number column is superfluous.
Subtotals and lowest scores can be computed from the next (detail) sheet, either in the app or with the use of Sheets formulas. I did the easy subtraction in the last column: ('=E2-F2')

Here is the detail sheet for the previous sheet:
EliminationMatchGamePlayerScores
(I had to include lots of words in the sheet name, because it has all that detail.)
Capture
Notice the EliminationGameRowID column, pointing back to the row number of that game in the EliminationMatchGames sheet. Relational database fans call this a foreign key, and the ROW() in column 1 acts like a primary key in each sheet (as long as no rows are deleted ever.)

The Baker matches need a summary sheet, with a score for each Baker match:
Capture

The ROWID will be used as a foreign key in the detail sheet, coming up next.

BakerGameFrames has one row per frame per Baker game, and a foreign key pointing back to the ROW of that Baker game.

I copied frame entries for a few Baker game frames, and added a few columns where the coder could try to turn those frame entries into points. (Lots of luck to you!)

These sheets should be enough to form a firm foundation for your record keeping.

When building up sheets like these, add the master record before any of its detail records, so that you will have the ROWID of the master record to note in each detail record for that master record.