Hallo, en welkom terug.
In deze lezing wil ik geef je nog een uitdaging.
Het is gerelateerd aan functies, maar deze uitdaging gaat meer
over verdeel en heers. Het gaat om meer te gaan over het
organiseren van je programma rond modules, het gaat meer over het oplossen van problemen.
Wat ik wil dat je doet is ik wil je om een boter-kaas-en-eieren spel te schrijven.
Dit gaat je gewoon helpen een betere probleemoplosser worden,
en het zal je helpen organiseren uw programma rond functies.
Je gaat ook een array gebruiken,
je zult moeten bedenken hoe u bepaalde gegevens moet formatteren,
maar het wordt een simulatie van een boter-kaas-en-eieren spel.
We gaan geen computer schrijven.
Het wordt een speler 1 tegen speler 2.
Dus ik wil dat je een schrijft programma dat boter-kaas-en-eieren speelt.
Hopelijk is iedereen dat bekend met dit programma of dit
spel, moet ik zeggen.
Het is maar een spel dat wordt gespeeld op een 3 x 3 raster met twee spelers.
Je draait om de beurt.
X is een neus.
Hopelijk doet dat een belletje rinkelen.
Ik wilde niet gaan en leg dit spel uit, maar hopelijk
ben je bekend met boter-kaas-en-eieren.
Ik ga een beetje geven demonstratie van hoe het werkt en hoe
ik zou verwachten dat de uitvoer zou verlopen.
Maar het is een eenvoudig boter-kaas-en-eieren-spel.
Wat ik wil doen is dat jij zal waarschijnlijk
een array moeten maken om de . weer te geven eigenlijke bord, het 3 x 3 raster.
Ik denk dat je weg kunt komen met gewoon een array met één dimensie maken.
Je zou eigenlijk een kunnen maken 2D-array ook om de rijen en de kolommen
weer te geven.
2D zou waarschijnlijk meer zijn intuïtief, maar het
is misschien wat moeilijker om te visualiseren in uw code.
Maar hoe dan ook werkt.
Het goede aan programmeren is: er zijn veel oplossingen voor een probleem.
Ik ga je een van mijn vertellen oplossingen en mijn ontwerpaanpak, maar voel je
vrij om het ontwerp te veranderen.
Zolang je gebruikt de c construeert correct, dat is alles waar
ik om geef.
Ik wil dat je leert hoe je c kunt gebruiken.
Zolang je programma gemoduleerd is en het is georganiseerd en het is
gemakkelijk te onderhouden, en het is kwaliteitscode, dat is waar ik me zorgen over maak.
Dus één manier om maar één manier te implementeren vertegenwoordigt het bord als een
eendimensionale array met tien elementen.
De reden dat ik hier tien elementen heb is Ik wil niet dat je nul gebruikt.
Deze tien elementen gaan om het bestuur
te vertegenwoordigen, maar ze gaan ook vertegenwoordigen de coördinaten op het bord.
Dus ik ga dit demonstreren en laten zien je hoe ik denk om te werken.
Maar de weg die je gaat om
daadwerkelijk de doos te kiezen waarin je wilt tekenen, gaat gebaseerd zijn op het elementnummer.
Naast het maken van een array voor het bestuur, je moet proberen te bedenken hoe
je dit probleem gaat oplossen neer, hoe je het gaat organiseren.
Ik denk aan het minimum dat je ten
minste drie functies nodig hebt, waarschijnlijk meer.
Maar je moet er in ieder geval één hebben functie die controleert op winnaars.
Dit zal eigenlijk gewoon zien als een persoon het spel heeft gewonnen of
ze kunnen zelfs controleren op een gelijkspel.
Je zou een functie moeten hebben die het bord trekt.
Omdat je gaat tekenen het bord na de beurt van elke speler.
En je gaat -- dus je gaat dit hergebruiken.
Een andere functie voor markeren: het bord,
dit gebeurt wanneer de gebruiker daadwerkelijk wil zetten x of een o in een bepaald vak.
Je hebt een functie nodig om in te stellen dat vak als een x of een o.
Wat er zal gebeuren, is dat je dat waarschijnlijk zult zijn het vullen van de array met die x of o.
En zo kun je kijken naar de array om te zien of je hebt gewonnen of verloren.
En in het markeringsbord, het kunt u ook controleren op
een ongeldige selectie.
Dus als geldige selecties waren één tot en met negen en de gebruiker
heeft tien ingevoerd, je zou zeggen, hé, je kunt dat niet, probeer het opnieuw.
Het spel moet gebruiksvriendelijk zijn, moet intuïtief te gebruiken zijn voor zover
het een gebruikersperspectief betreft en het moet worden georganiseerd
voor zover een programmeringsperspectief.
Denk hier echt eens over na.
Maak wat plannen, maak wat plannen, haal wat papier tevoorschijn, begin met het schrijven van een ontwerp over hoe je dit probleem
gaat aanpakken en wat? functies die u gaat gebruiken.
De manier waarop ik denk van dit gaat lopen, laat me
je een kleine demo laten zien.
Ik ga je geen bron laten zien code, maar dit is hoe ik me voorstel dat het
spel eruit zal zien als we het uitvoeren.
Misschien een kleine titel dat zegt, hé, het spel.
En dan ook nog een beetje informatie over de speler.
Speler 1 wordt x, speler 2 wordt o.
Denk eraan, dit heeft geen om op de computer te spelen.
Je kunt elke beurt gewoon inleggen.
Dus je zou dit spel moeten spelen met een vriend die naast je zit, en
ze zouden moeten vertellen waar u het nummer moet plaatsen.
Als je echt wordt ambitieus, je kunt
het spel schrijven om tegen een computer te spelen.
Maar je zult merken dat de 3 x 3 raster heeft aanvankelijk cijfers.
U kunt deze nummers gebruiken om in te voeren.
Dus als je speler één wil om hun beurt te nemen en zij
vertegenwoordigen x, afhankelijk van wat nummer dat ze invoeren, daar komt
de x te staan.
Dus we printen het raster, we tonen het bord en dan vertellen we ook de gebruiker
wiens beurt het is en we zeggen dat ze een nummer moeten invoeren.
Dus in dit geval ga ik door en voer nummer twee in en druk op Return.
En wat zal er gebeuren nadat ik hit twee en
keer terug, het gaat om te zien of iemand heeft gewonnen, het zal het scherm wissen
en het bord opnieuw tekenen.
Dus nadat ik op 2 heb gedrukt en binnenkom, zul je merk op dat ik de titel nog heb,
ik heb nog speler 1 en speler 2.
Maar nu in box 2 heb ik een x.
Dus wat had ik anders moeten doen er is dat ik had
moeten controleren voordat ik het bord liet zien of of niet, we hadden een winnaar of een gelijkspel.
En dat is natuurlijk de eerste ingang, dus we hebben geen van beide.
Aangezien we geen winnaar hebben of een gelijkspel, ik ga nu
de speler vragen om een getal in te voeren en dan ze kunnen hier elk nummer kiezen.
Als ik nu een ongeldige invoer? nummer zoals 10, zou het me moeten vertellen dat
het ongeldig is.
En het zou me in staat moeten stellen om misschien nog een zet doen.
Als ik 2, 2 . zou invoeren moet ook ongeldig zijn.
Dus als ik 2 invoer, staat er ook ongeldig omdat 2 al bezet is door x.
Dus als het programma me toestaat om probeer het nog eens, je zou gewoon van hun beurt af kunnen
komen, maar dat is niet echt eerlijk.
Dus nu ga ik gewoon zeggen waar wil ik de o plaatsen? Ik ga zeggen
5, ik ga zetten ongeldige zet, het gaat het bord opnieuw tekenen
en er is een o en 5.
En nu staat er speler 1.
En je blijft dit doen totdat je hebt een winnaar of een gelijkspel.
Ik zeg gewoon 9.
Nu heb ik daar een x, geldig inzendingen zijn 1 3 4 6 7 en 8.
Ik ga zeggen 3.
En laten we proberen om x naar . te krijgen win dus nu gaat x naar acht
en ik zal o en 6 plaatsen om je te laten zien dat het spel werkt met een winnaar.
En dan zet ik 7 voor x, het spel zou nu voorbij moeten zijn. Ik drukte op terugkeer.
Er staat dat speler één wint, en het speelde zelfs een beetje geluid voor mij, ik
deed daar een beetje fancy dingen.
Dus het spel is voorbij, speler één wint.
En het zou ook moeten gebeuren als speler 2 wint of als er een gelijkspel is.
Dus denk na over hoe je wilt om dit probleem aan te pakken.
Leuk klein programma.
Ik zal een oplossing doornemen en zorgen voor de broncode in de volgende les. Dank u.