Et eksempel fra HTX 3. år
Eksamensprojekt i programmering C om terningspil
Brug materialet til at undersøge opbygning, metode og faglige valg.
Lær af eksemplet på 15 minutter
Læs med de tre spørgsmål herunder, og skriv et kort svar på hvert, gerne med et sidetal. Så har du noget konkret at tage med over i din egen opgave.
- 4 min
Find problemformuleringen eller opgavens spørgsmål. Står svaret i konklusionen?
- 4 min
Find et sted, hvor opgaven bruger en kilde eller et eksempel. Står der, hvor det kommer fra?
- 4 min
Find et afsnit, der vurderer eller diskuterer. Hvad gør det anderledes end et afsnit, der forklarer?
- 3 min
Din egen opgave: Hvad er det ene spørgsmål, din egen opgave svarer på, og står svaret i din konklusion?
Skal du selv skrive en opgave? Metoden står her: Akademisk opgaveskrivning
Om opgaven
Ophavet er ikke dokumenteret for denne post. Katalogoplysninger: HTX 3. år, Programmering C, 8 sider. Brug materialet til at se, hvordan teksten er bygget op, og hvilke faglige valg der er truffet.
Hele opgavens tekst
Se originaldokumentetLæs teksten direkte her på siden. Figurer og den præcise opsætning af tabeller og formler finder du i originaldokumentet.
Gå til en side
Side 1
HTX 3. år
Eksamensprojekt – Programmering C
HTX 3. år
Klasse: 3.D
Skole: Frederiksberg Tekniske Gymnasium HTX
Lærer
Deadline: 26. april 2011
Underskrift:_____________________
Side 2
Klasse: 3.D
Eksamensprojekt – Programmering C
2
Indholdsfortegnelse
Indledning/introduktion .................................................................................................................................... 3
Formål ............................................................................................................................................................ 3 Abstract ......................................................................................................................................................... 3 Krav til programmet ...................................................................................................................................... 3 Afgrænsning .................................................................................................................................................. 4 Dokumentation af selve programmet ............................................................................................................... 4 Funktionsbeskrivelse (skærmudskrift, indtastningsmuligheder, funktionalitet) .......................................... 4
Overordnet beskrivelse ................................................................................................................................. 6 Beskrivelse af delprogrammer....................................................................................................................... 6 Diverse funktioner ......................................................................................................................................... 7 Test af programmet ........................................................................................................................................... 7
Fejl/Mangler – Forbedringsforslag .................................................................................................................... 8
Konklusion ......................................................................................................................................................... 8 Litteraturliste ..................................................................................................................................................... 8
Side 3
Klasse: 3.D
Eksamensprojekt – Programmering C
3
Indledning/introduktion
Formål
Mit formål med projektet er at programmere spillet, ””. Bl.a. er dette produkt også ren underholdning. Man skal kunne spille det, hvis man nu keder sig, eller bare hurtig vil tænde noget frem. Spillet kan bl.a. også køres på svage computer, som ikke er helt til de store spil.
Abstract er en klassisk familie terningspil, der spilles med mange forskellige variationer. Der skal være mindst to spillere, der får 6 terninger hver.
Spillet spilles således, at spilleren slår med alle seks terninger. Alle 2'ere og 5'ere lægges til side og bruges ikke mere. Spilleren slår igen med resten af terningerne og tager igen 2'ere og 5'ere fra.
Når spilleren har et slag uden 2'ere eller 5'ere stoppes spillet. Herefter får man noteret point for de resterende terninger. (altså alle terninger minus 2'ere og 5'ere).
Spillets navn kommer af, at hvis spilleren kun slår 5'ere og 2'ere får spilleren ingen point - !
Derefter starter den næste spiller.
Der kastes første gang og man får en 2'er, der skal tages fra.
Der kastes igen og man får tre 5'ere, der tages fra.
Der kastes igen og terningerne viser 4 og 6.
Disse kan ikke tages fra, så spilleren ender på 10 point.
Krav til programmet
Mit produkt er altså spillet ””, så derfor har jeg også valgt at stille nogle krav op, som lyder:
1. Spillet skal være konstrueret og implementeret i konsolvinduet C/C++. 2. Programmet skal indeholde datatyper, skærmudskrifter, løkker/if-sætninger, funktioner.
1 3. Spillet skal også køre efter reglerne fra det originale spil.
1
http://www.terningspil.dk/regler.aspx?ID=17
Side 4
Klasse: 3.D
Eksamensprojekt – Programmering C
4
Afgrænsning
Spillet/programmet er afgrænset således at, spiller nr. der altså får 0 point i en runde, kommer
automatisk tilbage til næste runde. På den måde kan spillet ikke blive færdig. Så derfor har jeg
valgt at afgrænse point for at kunne vinde. Spilleren der først når de ≥50 point (det kunne også
være 100), er altså vinderen.
Dokumentation af selve programmet
Funktionsbeskrivelse (skærmudskrift, indtastningsmuligheder, funktionalitet)
1. Programmet starter, ser man. Startskærm.
2. På næste skærm, skal der indtastes antal spillere, og man vælger derefter spillet.
3. Derefter vises skærmen hvor alle 4 spillere er med. Spiller 1 har kastet med terning og fået
22 point for første runde.
Side 5
Klasse: 3.D
Eksamensprojekt – Programmering C
5
Der trykkes nu bare på en tilfældig tast for det bliver den næste spillers tur.
4. Her kan man se en slags ”score board”, der tæller pointene op, og gøre det også overskueligt over, hvem der har hvor mange antal point. I stedet for man skulle skrive det ned på et stykke papir eller noget.
5. Hvis en af spillerne får 0 point i en runde, bliver der vist ”” på skærmen.
6. Da der så til sidst kåres en vinder, kan man få muligheden for at spille igen.
7. Derefter kan man altså vælge at spille igen, ved at skrive ”ja” eller ”j”. Det lige meget om det med blokbogstaver eller små bogstaver. Hvis man gerne vil spille igen, så starter man forfra med 0 point.
Side 6
Klasse: 3.D
Eksamensprojekt – Programmering C
6
Overordnet beskrivelse
Pseudokode
Main()
{
1. Vis start skærm
2. Slet start skærm
3. Indtast antal spillere
4. Gør
{
5. For hver spiller
{
6. Nulstiller point
}
7. Vælger spil //spil 1
8.Gør
{
9. For hver spiller
{
10. Udskriv samlede point
11. Gør
{
12. Kast terning()
13. Fjern terning()
14. Udskriv point
15. Så længe ny tur
}
{
16. Hvis man får en vinder
{
17. Spil slutter
Beskrivelse af delprogrammer
Hvis jeg skulle gå ind og snakke om funktioner, findes der flere former for dem. F.eks. er der nogle funktioner der returnere en værdi. Andre behøver ikke at returnere noget.
De mest brugte funktioner, som jeg har brugt er:
Side 7
Klasse: 3.D
Eksamensprojekt – Programmering C
7
Int: Funktionen returner et helt tal.
Void: Funktionen returner ikke noget helt bestemt. Dog kan den bruges til at vise eksempel regler, eller f.eks. menu styring.
Grunden bag i at jeg har gjort sådan er, så det bliver meget nemmere at hente de forskellige dele af programmet, for jeg slipper nemlig gentagelserne.
Diverse funktioner
IndtastAntalSpillere()
Funktionen her bruges til at indtaste antal spillere, hvor jeg så har brugt en do-while løkke for at programmet skal kører antal gange, indtil betingelsen netop bliver opfyldt.
KastTerning()
Denne funktion er altså ansvarlig for terningen. Rand() generer et tilfældigt tal mellem 0 og 5.
FjernTerning()
Funktionen her fjerner terninger der viser 2 og 5 på skærmen. Der bliver brugt en for-løkke her der skal køre betingelsen indtil terningerne viser 2 og 5. En if-sætning har jeg også brugt for fjernelse af terning. Int bliver også brugt til at returnere et heltal, hvis betingelsen skal køres igen.
Jeg har bl.a. også lavet tekster, som en funktion, der så skal vises på skærmen under de adskillige betingelser. Tekst1()Tekst2()Tekst3()Tekst4().
Test af programmet
Jeg har under udviklingen af mit program testet det flere gange, for at se om hvordan det kørte.
Under dette har jeg også gemt flere ”checkpoints”, altså når jeg havde nået et mål, gemte jeg det.
Når jeg så skulle forsætte mit arbejde, begynde jeg fra en kopi af den samme fil. På den måde var jeg så sikker på at hvis det andet nu skulle fejle eller udvikle sig til noget jeg ikke ville have. Kunne jeg bare direkte slette det og begynde fra den samme fil.
For at lave en fuld testning af mit program, har jeg gjort det simpelt ved at indtaste antal spillere, og derefter vælge spillet. Jeg prøvede også at lave nogle små ændringer, såsom varierer antal point for at kunne vinde. F.eks. 20 eller 100. Det fungerede helt fint.
Spillet har jeg desuden også fået testet af andre, hvor de synes at layoutet og farverne var pæne og om hvor godt spillet kører.
Side 8
Klasse: 3.D
Eksamensprojekt – Programmering C
8
Fejl/Mangler – Forbedringsforslag
Hvis der var noget i mit program der helt klart skulle ændres kunne det være at jeg havde lavet programmet om til vector. Her kunne jeg nemlig variere antal pladser.
Det ville også have været praktisk hvis man kunne indtaste sit eget navn i stedet for at få tildelt et nummer.
Noget andet jeg også opdagede, var at hvis jeg trykkede på et tilfældigt knap, startede spillet af sig selv og viste hvor mange point spilleren havde fået. Det ville måske være lidt mere rart hvis man selv kunne vælge en tilfældig tast for at kaste med sin terning. På den måde følger man også bedre med.
Det 4. problem i mit program er at når spillet slutter og der bliver spurgt om at spille igen, og man så vælger ja. Burde man meget gerne kunne vælge antal spillere igen.
Den sidste typiske fejl er at hvis jeg laver en tastning af et bogstav så får det programmet til at crashe.
Konklusion
Jeg kan til sidst konkludere at jeg har lavet et program som opfylder kravene jeg stillede. Bl.a. har
jeg fra dette projekt fået en mere forståelse i programmering og hvordan C/C++ programmet
fungerer. Også hvordan og hvor man kan benytte de forskellige variabler, løkker, if-sætninger osv.
Jeg har også lært om arrays beregningsmetoder og fejl i indtastningsmetoder.
Litteraturliste
Bøger:
C++ af Kris Jamsa
Links:
http://www.terningspil.dk/regler.aspx?ID=17 http://www.cs.aau.dk/~normark/c-prog-04/html/notes/arrays.html http://www.cplusplus.com/
Se opgaven i originaldokumentet eller gå til tekstens begyndelse.
Materialet
Fuld skærmOpgaven åbner, når du ruller ned til den.