Met naar schatting 2,5 miljard fans is cricket een van de grootste en populairste sporten ter wereld. Alleen al in India is cricket maar liefst 5,3 miljard dollar waard. Sachin Tendulkar, Donald Bradman, Brian Lara en MS Dhoni zijn slechts enkele legendes wiens namen in de harten van miljoenen leven.
Het is geen verrassing dat cricket zijn weg heeft gevonden naar virtual reality, videogames en andere variaties zoals boek- en handcricket. Ga nog een stap verder met dit spel door een handcricketspel te bouwen met behulp van Python.
Wat is handcricket?
Handcricket is een spel waarbij twee spelers het met hun vingers tegen elkaar opnemen. In elke beurt tonen beide spelers tegelijkertijd een nummer met hun vingers. Als de scores overeenkomen, is de batsman uit, anders krijgen ze hun aantal als runs. Uiteindelijk wint de speler die het meeste scoort.
Je kunt dit spel bouwen en het ook tegen een computer spelen. In plaats van vingers uit te steken om de partituur weer te geven, voert u deze in het programma in. Python is een van de gemakkelijkste en handigste talen om te gebruiken. Als je geen eerdere ervaring hebt met het gebruik van Python, kun je aan de slag met een van deze
gratis online Python-cursussen voor beginners.Als je eenmaal de basis hebt geleerd, is het een goed idee om miniprojecten en games te bouwen om je leerproces te versterken. U kunt beginnen met het bouwen van een digitale klok, dobbelstenen, een quiz of een woordenteller. Ook hier kun je inspiratie uit opdoen Python-projectideeën voor beginners.
Hoe handcricketspel te bouwen met behulp van Python
Hierin vind je de broncode van Hand Cricket Using Python GitHub opslagplaats.
Importeer de willekeurige bibliotheek die nodig is voor de eerste worp en de keuzes van de computer. Definieer een functie met de naam invoer_getal die twee argumenten accepteert, min En max respectievelijk om de invoer van de gebruiker te valideren. De... gebruiken invoer() functie, sla het nummer op dat de gebruiker invoert in de variabele aantal, en cast het van het standaardtype String naar Integer met behulp van int().
Als het nummer dat de gebruiker invoert groter is dan de maximumlimiet of kleiner is dan de minimumlimiet, vraag de gebruiker dan om een geldige keuze in te voeren door de functie recursief aanroepen. Als het nummer binnen het bereik valt, retourneert u het.
importeren willekeurig
definvoer_getal(minimaal, maximaal):
getal = int (invoer())
als aantal > max of aantal < min:
afdrukken("Vul een geldige keuze in")
opbrengst invoer_getal (min, max)
anders:
opbrengst aantal
Definieer een functie beurten die de huidige batsman en de te achtervolgen runs accepteert als invoerargumenten. Vraag de gebruiker om getallen in te voeren binnen het bereik van één tot zes. Volgens de regels van handcricket, als zowel de gebruiker als de computer hetzelfde nummer kiezen, is de huidige batsman uit.
Initialiseer een variabele totaal om het totale aantal gescoorde punten door een batsman op te slaan en op nul te zetten. Begin een oneindig terwijl lus en bel de invoer_getal() functie om de invoer van de gebruiker op te slaan en te valideren. Gebruik de willekeurige modules randint() functie om een willekeurig getal tussen één en zes voor de computer te kiezen.
Laat de keuzes van beide spelers zien en controleer of ze gelijk zijn. Als dat zo is, laat dan zien dat de batsman uit is en geef het totale aantal gescoorde punten in die innings terug.
Controleer anders wie er aan het slaan is en voeg ook de juiste waarde toe aan de totale score pnum of num. Geef de huidige score van de batsman weer.
In het geval van de tweede innings wil je controleren of de slagman de score van zijn tegenstander al heeft verslagen. Controleer hiervoor of de naar_achtervolgen waarde niet leeg is en als de score van de batsman hoger is. Zo ja, geef dan hun winnende score terug.
defbeurten(slagman, achtervolgen):
afdrukken("Voer cijfers in tussen 1 en 6. Als jullie allebei hetzelfde nummer kiezen dan " + slagman + " is uit")
totaal = 0terwijlWAAR:
pnum = invoer_getal(1, 6)
cnum = willekeurig.randint(1, 6)afdrukken("Gebruiker heeft gekozen", pnum)
afdrukken("Computer koos", knoem)
als pnum == cnum:
afdrukken (slagman + " is uit")
opbrengst totaal
anders:
totaal = totaal + (pnum als slagman == "Gebruiker"anders cnum)
afdrukken (slagman + "score is", totaal)
als naar_achtervolgen isnietGeenEn totaal > naar_achtervolging:
opbrengst totaal
Toon het bericht voor toss en valideer de keuze van de gebruiker met behulp van de invoer_getal() functie. Gooi de munt op en sla het resultaat op in de variabele munt. Initialiseer de standaardwaarde van speler_kommen tot vals. Als de coinflip overeenkomt met de keuze van de gebruiker, wint de gebruiker de toss en kiest hij tussen batten en bowlen.
Neem de keuze van de gebruiker en controleer of hij er een heeft ingevoerd. Zo ja, evalueer de uitdrukking dan naar waar en sla deze op in de speler_kommen variabel. Geef de keuze van de gebruiker weer. Aan de andere kant, als de computer de toss heeft gewonnen, voer dan uit randint() en evalueer de juiste waarde speler_kommen.
Geef de keuze van de computer weer en begin de innings.
afdrukken("Tijd voor toss, voer 0 in voor Kop en 1 voor Munt")
keuze = invoer_getal(0, 1)
munt = willekeurig.randint(0, 1)
player_bowls = Valsals munt == keuze:
afdrukken("Je hebt de toss gewonnen")
afdrukken("Selecteer 0 om te batten, 1 om te bowlen")
player_bowls = invoer_getal(0, 1) == 1als player_bowls:
afdrukken("Je koos ervoor om te bowlen")
anders:
afdrukken("Je koos ervoor om te slaan")
anders:
afdrukken("Computer heeft de toss gewonnen")
player_bowls = willekeurig.randint(0, 1) == 1
als player_bowls:
afdrukken("Computer koos ervoor om te slaan")
anders:
afdrukken("Computer koos ervoor om te bowlen")
Als speler_kommen is waar, de computer vleermuizen eerst en vice versa. Bereken de gescoorde punten in een innings met behulp van de functie die u eerder hebt gedefinieerd. De functie vereist de naam van de huidige batsman en de te achtervolgen runs. Als de eerste batsman de score bepaalt, maak er dan een optionele parameter van en pas Geen. Geef voor de tweede innings de score van de batsman door die het doel heeft gesteld.
als player_bowls:
comp_score = beurten("Computer", Geen)
user_score = beurten("Gebruiker", comp_score)
anders:
user_score = beurten("Gebruiker", Geen)
comp_score = beurten("Computer", gebruikersscore)
Als de computer minder scoort dan de gebruiker, wint de gebruiker en vice versa. Als de scores hetzelfde zijn, laat dan een gelijkspel zien.
als comp_score < gebruikersscore:
afdrukken("Gebruiker wint")
elif user_score < comp_score:
afdrukken("Computer wint")
anders:
afdrukken("Wedstrijd gelijkspel")
Zet alle code bij elkaar en maak je klaar om altijd en overal handcricket te spelen binnen handbereik.
De uitvoer van handcricket met behulp van Python
Je kunt de uitvoer van een spelletje handcricket met behulp van Python als volgt zien:
Wanneer u het programma uitvoert, vraagt het programma u om een keuze te maken voor de toss en kent het juiste resultaat toe. Als je wint, mag je beslissen of je wilt batten of bowlen, anders neemt de computer een beslissing. Elke inning gaat door totdat de nummers overeenkomen en er één uit is. Uiteindelijk vergelijkt de computer de eindscore en roept de winnaar uit.
Terminal-gebaseerde spellen in Python
Het bouwen van spellen is een geweldige manier om Python te leren en het is erg leuk. Je hoeft geen expert te zijn om te beginnen met coderen en experimenteren in Python. Met precies de juiste basisprincipes kun je geweldige terminalspellen bouwen.
Begin met het bouwen van de Magic 8 Ball, Hangman, Rock Paper Scissors, Mad Libs Generator en het Number Guessing Game. Naarmate je verder komt, verken je de PyGame-bibliotheek om ook je eigen grafische videogames te bouwen.