[PYTHON] Wenn Sie neu in der Programmierung sind, warum machen Sie nicht vorerst ein "Spiel"? Die Geschichte

Einführung

Ich habe mit dem Programmieren begonnen, weiß aber nicht, wofür dies nützlich ist. Ich denke, es gibt überraschend viele Anfänger, die keine Vorstellung davon bekommen, was sie können.

Sie wissen beispielsweise, dass Python Automatisierung, maschinelles Lernen und Bilderkennung ausführen kann. Ich weis es auch.

Aber wenn ich anfange zu studieren, sind das erste "Variablen", "Datentypen", "Listen" ... Also, was ist es? Schmeckt es? ?? Ist es nicht? Ich bin dumm.

Jetzt,

Die Einführung ist länger geworden. Ich denke, die aktuelle Programmierausbildung hat eine hohe Hürde. Mit Ausnahme von klugen Leuten sind die Lernkosten für Leute wie mich hoch.

Deshalb denke ich, dass es in Ordnung ist, mit etwas Einfacherem zu beginnen.

Also wie geht's dir?

Mach ein "Spiel". Das Spiel ist jedoch tödlich einfach. Es ist ein einfaches Spiel, in dem Sie einfach "Janken" mit Ihrem Lieblingscharakter spielen.

Es ist ein Stein-Papier-Scheren-Spiel, das häufig in Büchern für Anfänger in der Programmierung erscheint. Ich werde dies auf meine eigene Weise arrangieren.

Auch wenn es nur ein Janken ist, finde ich den Janken, der mit viel Liebe und Engagement hergestellt wurde, so interessant wie er ist.

Implementierung

1. Machen Sie zuerst einen einfachen Müll

janken.py



import random

# janken head
print("Es ist Janken YO!")
print("Erste Morgendämmerung! Janken Whit! !!")

# define function
def janken():
    global myhand
    global mynum
    global yournum
    yournum = random.randint(1,3)
    mynum = 0
    myhand = input(":")
    if myhand == "goo":
        mynum = 1
    elif myhand == "choki":
        mynum = 2
    elif myhand == "paa":
        mynum = 3
    else:
        print("Bitte mach es ernst!")
    
    if yournum == 1:
        yourhand = "goo"
        print(yourhand)
    elif yournum == 2:
        yourhand = "choki"
        print(yourhand)
    elif yournum == 3:
        yourhand = "paa"
        print(yourhand)
    
    i = 1
    while i ==1:
        result = (yournum - mynum) % 3
        if result == 0:
            print("Aiko!")
            janken()
        elif result == 1:
            print("Ich habe ~ verloren")
            break
        elif result == 2:
            print("Ich habe gewonnen!")
            break

# execute function
janken()

Wir haben ein Spiel entwickelt, in dem Sie mit jemandem spielen können, der wie Fujiwara aussieht. Es gibt zwei Hauptpunkte im Janken-Programm: Eine besteht darin, ["goo", "choki", "paa"] numerisch als [1,2,3] auszudrücken. Dann wird der Unterschied zwischen Ihrem Gegner und Ihrer eigenen Zahl unter Verwendung der gemeinsamen Formel von 3 bestimmt. Wenn zum Beispiel die andere Partei "goo" ist und Sie auch "goo" geben, 1-1 = 0 0% 3 = 0, also Aiko. Wenn der Gegner "goo" ist und Sie "choki" sind, verlieren Sie, weil 1-2 = -1 -1% 3 = 2. Wenn dein Gegner "goo" ist und du "paa" bist, gewinnst du, weil 1-3 = -2 -2% 3 = 1. Und so weiter.

Die zweite besteht darin, diesen Fall gut auszudrücken. Janken ist ein Algorithmus, der nur zu diesem Zeitpunkt eine Schleife verursacht. Zu diesem Zeitpunkt müssen Sie also einen Prozess schreiben, um von vorne zu beginnen (ich rufe die Funktion erneut auf, aber es gibt möglicherweise einen besseren Weg).

Übrigens macht es Spaß, nur mit einer Person wie Fujiwara zu spielen, und dies ist das Ende eines allgemeinen Studienbuchs, aber dieses Mal möchte ich mehr arrangieren.

2. Holen Sie sich 3 im Voraus

Apropos Janken, es ist ungefähr drei im Voraus. Also werde ich 3 dieser Programme im Voraus nehmen.

janken.py



import random

# janken head
print("Es ist ein dreizackiger Janken YO!")
print("Erste Morgendämmerung! Janken Whit! !!")

count = [0,0]   # [mypoint,yourpoint]

# define function
def janken():
    global myhand
    global mynum
    global yournum
    yournum = random.randint(1,3)
    mynum = 0
    myhand = input(":")
    if myhand == "goo":
        mynum = 1
    elif myhand == "choki":
        mynum = 2
    elif myhand == "paa":
        mynum = 3
    else:
        print("Bitte mach es ernst!")
    
    if yournum == 1:
        yourhand = "goo"
        print(yourhand)
    elif yournum == 2:
        yourhand = "choki"
        print(yourhand)
    elif yournum == 3:
        yourhand = "paa"
        print(yourhand)
    
    global count
    i = 1
    while i ==1:
        result = (yournum - mynum) % 3
        if result == 0:
            print("Aiko!")
            janken()
        elif result == 1:
            print("Ich habe ~ verloren")
            if count[0] < 2:
                print("Ich werde das nächste Mal nicht verlieren ~")
                count[0] += 1
                print(str(count[0]) + "Sieg"+ str(count[1]) + "Es ist eine Niederlage!")
                janken()
            elif count[0] == 2:
                print("Ich wurde getötet ~")
                break
        elif result == 2:
            print("Ich habe gewonnen!")
            if count[1] < 2:
                print("Der Verlierer hört zu, was der Gewinner sagt ~")
                count[1] += 1
                print(str(count[0]) + "Sieg"+ str(count[1]) + "Es ist eine Niederlage!")
                janken()
            elif count[1] == 2:
                print("Hurra! Ich habe ~ gewonnen")
                break

# execute function
janken()

Damit konnte ich drei im Voraus bekommen. Liegt die Gewinnquote bei 50%? Wenn ich es tatsächlich versuche, kann ich nicht unerwartet gewinnen. Dieses Mal ist es einfach zu implementieren, da Sie einfach eine Variable namens count erstellen und 1 Punkt für jeden Gewinn oder Verlust hinzufügen. Bis wir 3 vor uns haben, rufen wir die Funktion und die Schleife auf die gleiche Weise wie zuvor auf.

Übrigens macht es Spaß, nur mit Sekretär Fujiwara zu spielen, und vielleicht spielt eines Tages nur noch mit Sekretär Fujiwara. So etwas ist nicht genug.

3. Erhöhen Sie die Anzahl der Zeichen

Genau. Die wahre Identität des Unbefriedigenden ist das Fehlen von Charakteren. Nun, Sekretär Fujiwara ist auch süß, aber ich bin es leid, den ganzen Tag mit Sekretär Fujiwara zu verbringen (oder besser gesagt, ich habe es satt, Sekretär Fujiwara zu sein). Erhöhen wir also die Anzahl der Zeichen.

janken.py



import random

#Zählen Sie die Anzahl der Siege
count = [0,0]   # [mypoint,yourpoint]

# define class and function
class Shuchiin:
    def __init__(self,name,words_list):
        self.name = name
        self.words_list = words_list
    
    def janken_head(self,words_list):
        self.words_list = words_list
        print(words_list[0])
        print(words_list[1])

    def janken(self,words_list):
        self.words_list = words_list
        global myhand
        global mynum
        global yournum
        yournum = random.randint(1,3)
        mynum = 0
        myhand = input(":")
        if myhand == "goo":
            mynum = 1
        elif myhand == "choki":
            mynum = 2
        elif myhand == "paa":
            mynum = 3
        else:
            print(words_list[2])
        
        if yournum == 1:
            yourhand = "goo"
            print(yourhand)
        elif yournum == 2:
            yourhand = "choki"
            print(yourhand)
        elif yournum == 3:
            yourhand = "paa"
            print(yourhand)
        
        global count
        i = 1
        while i ==1:
            result = (yournum - mynum) % 3
            if result == 0:
                print(words_list[3])
                self.janken(words_list)
            elif result == 1:
                if count[0] < 2:
                    print(words_list[4])
                    print(words_list[5])
                    count[0] += 1
                    print(str(count[0]) + "Sieg"+ str(count[1]) + "Es ist eine Niederlage")
                    self.janken(words_list)
                elif count[0] == 2:
                    print(words_list[6])
                    break
            elif result == 2:
                if count[1] < 2:
                    print(words_list[7])
                    print(words_list[8])
                    count[1] += 1
                    print(str(count[0]) + "Sieg"+ str(count[1]) + "Es ist eine Niederlage")
                    self.janken(words_list)
                elif count[1] == 2:
                    print(words_list[9])
                    break

# define each words_list
Kei_list = ["Ist es Janken?","Zuerst goo, janken, hoi","Wenn Sie es nicht ernst nehmen, höre ich auf","Aiko, richtig?","Äh","Nächstes Mal ...","Du bist stark. Aber das nächste Mal werde ich nicht verlieren","Wütend","Machst du es immer noch","Es ist mein Gewinn. Sie sollten zunächst die heutige Tötungsmethode üben"]
Huziwara_list = ["Es ist ein dreizackiger Janken YO!","Erste Morgendämmerung! Janken Whit! !!","Bitte mach es ernst!","Aiko!","Ich habe ~ verloren","Ich werde das nächste Mal nicht verlieren ~","Ich wurde getötet ~","Ich habe gewonnen!","Der Verlierer hört zu, was der Gewinner sagt ~","Hurra! Ich habe ~ gewonnen"]
Shinomiya_list = ["Oh, willst du mit mir spielen?  Wie süß. Ist es in Ordnung, drei im Voraus zu bekommen?","Zuerst goo, janken, hoi","Könnten Sie es ernst nehmen?","Aiko","Oh, ich habe verloren","Ich werde das nächste Mal nicht verlieren","Lassen Sie uns zugeben, ich verliere","Oh, ich habe gewonnen","Sie sollten über Ihren Willen nachdenken","Wie süß"]

# create each instance
Kei = Shuchiin("Kei",Kei_list)
Huziwara = Shuchiin("Huziwara",Huziwara_list)
Shinomiya = Shuchiin("Shinomiya",Shinomiya_list)

# execute function
player = input("Gegen wen wirst du spielen?:")
if player == "kei":
    Kei.janken_head(Kei_list)
    Kei.janken(Kei_list)
elif player == "huziwara":
    Huziwara.janken_head(Huziwara_list)
    Huziwara.janken(Huziwara_list)
elif player == "shinomiya":
    Shinomiya.janken_head(Shinomiya_list)
    Shinomiya.janken(Shinomiya_list)
else:
    print("Lass uns heute nach Hause gehen")

Zusätzlich zu Sekretär Fujiwara habe ich Kei-chan und Kaguya-sama angerufen (es kommt vor, dass es nur Frauen gibt). Jetzt haben Sie viel Abwechslung. Die Änderungen bestehen darin, dass der Dialog für jeden Charakter geändert wurde und der gegnerische Spieler zu Beginn ausgewählt werden kann.

Hmm, jetzt kannst du den ganzen Tag spielen.

abschließend

Nun, ich habe über die Implementierung eines einfachen Spiels nachgedacht, aber ich habe festgestellt, dass die Programmierung "Prozeduren" ausdrücken kann, einschließlich bedingter Verzweigung und Wiederholung.

Man kann sagen, dass Janken das einfachste Verfahren ist, das die bedingte Verzweigung von Sieg und Niederlage und die Wiederholung aufeinanderfolgender Schlachten umfasst.

Dann stellte ich fest, dass sogar ein Janken vier Regeln erfordert, bedingte Verzweigung, Funktionen und Klassen.

Ich denke, dass es am stärksten ist, kleine Dinge stetig zu tun. Ich bin auch ein Anfänger in der Programmierung, aber ich möchte den Programmierpfad Schritt für Schritt gehen.

Recommended Posts

Wenn Sie neu in der Programmierung sind, warum machen Sie nicht vorerst ein "Spiel"? Die Geschichte
Machen Sie vorerst ein Histogramm (matplotlib)
Ich habe eine Funktion erstellt, um zu überprüfen, ob der Webhook vorerst in Lambda empfangen wird
Registrieren Sie zum ersten Mal eine Aufgabe in cron
Bis Sie die Flask-Anwendung vorerst in Google App Engine ausführen
Sprechen Sie über die Zeiterfassungs-API in der Programmiersprache
Warum ist Pythons main () -if-Anweisung angehängt?
Ich möchte vorerst eine Docker-Datei erstellen.
Einstellungen zum Ausführen eines Tests jedes Mal, wenn Sie eine Datei mit watchmedo (watchdog) im Editor speichern
Dekorateur, der AWS-SNS benachrichtigt, wenn die Funktion nicht innerhalb der angegebenen Zeit beendet wird
Zum ersten Mal versuchte ein Programmieranfänger eine einfache Datenanalyse mit Programmierung
Versuchen Sie vorerst, FireBase Cloud Firestore mit Python zu verwenden
Ein Anfänger, der seit 2 Monaten programmiert, versuchte, das reale BIP Japans in Zeitreihen mit dem SARIMA-Modell zu analysieren.
[Hi Py (Teil 1)] Ich möchte vorerst etwas machen, also setze zuerst ein Ziel.
Die Geschichte, wenn in Optuna unterschiedliche Verteilungen für denselben Parameter angegeben werden
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Bei Programmierfehler: (1146, "Tabelle '<Tabellenname>' existiert nicht") tritt in Django auf
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
Wenn in boto3 der Fehler no attribute angezeigt wird, überprüfen Sie die Version
Bis Sie die Silbermedaille (Top 3%) in dem Wettbewerb gewinnen, an dem Sie innerhalb eines Monats zum ersten Mal in der Datenwissenschaft teilgenommen haben!
Ich dachte, ich könnte einen netten Gitignore-Editor machen, also habe ich vorerst versucht, so etwas wie MVP zu machen
Ändern Sie die Liste in der for-Anweisung
MongoDB mit Python zum ersten Mal
Was ist der Grund, warum der Mensch keine grundlegenden Befehle auf Japanisch anzeigt?
Eine Lösung, wenn Sie versehentlich den Python-Interpreter in / usr / local / bin / entfernen.
Ein Programmieranfänger versuchte, die Ausführungszeit des Sortierens usw. zu überprüfen.
Versuchen Sie, Pfeffer ein externes Modul hinzuzufügen. Vorerst in Anfragen.
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Es ist okay, zum ersten Mal teilzunehmen! Ein Hackason-Starter-Kit, das Sie "vor" der Teilnahme am Hackason vorbereiten möchten!
Vorhersage für Pferderennen: Wenn Sie der Meinung sind, dass die Wiederherstellungsrate beim maschinellen Lernen (Light GBM) 100% überschritten hat, haben Sie dies getan
Selbst wenn Sie ein Python-Anfänger sind und weniger als ein Jahr Pferderennen haben, konnten Sie ein Triple gewinnen.