Studiekompasset.dkKlasse: HTX 3. år · Fag: Programmering C
HTX 3. år
Eksamensprojekt – Programmering C
HTX 3. år
Klasse: 3.D
Skole: Frederiksberg Tekniske Gymnasium HTX
Lærer
Deadline: 26. april 2011
Underskrift:_____________________
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
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.
3. Spillet skal også køre efter reglerne fra det originale spil.
1
1
http://www.terningspil.dk/regler.aspx?ID=17
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.
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.
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:
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.
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/