Pyscript und txt - Datein

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
byWeak
User
Beiträge: 1
Registriert: Sonntag 5. Februar 2023, 21:32

HalliHallo,
ich probiere das Spiel Scramble mit Pyscript in Verbindung mit HTML zu programmieren. Die Wörter im Spiel werden mit einer txt - Datei aufgerufen, als ich alles in Python gecodet habe, hat alles funktioniert, aber nun bei der Übertragung und bei der Verbindung mit der txt - Datei gibt es nun Probleme und er findet oder ruft die Datei nicht mehr auf.

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
<title>Scramble|Spieleaffe nur besser</title>
<link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" /> 
<script defer src="https://pyscript.net/alpha/pyscript.js"> </script>
</head>
<body>

    <header class="header">
        <div class="container">
            <div class="header_title">
                <h1 style="color: rgb(249, 237, 11);">Hier steht unser Titel</h1>
            </div>
            <div class="header_buttons">
                <a href="Home.html">Home</a>
                <a href="Spiele.html">Spiele</a>
                <a href="Support.html">Support</a>
                <input type="text" placeholder="Search Bar">
                <a style="float:right" href="Login.html">Login</a>
            </div>
        </div>
    </header>
    
<div class="games_container">
    <input type="text" placeholder="Word?" id="Guess">
    <py-script>
    import random


    class ScrambleGame(): 
        def __init__(self, word: str, lives: int): #Konstruktor benötigt nur leben und das wort
            self.word = word
            self.shuffledWord = None
            self.lives = lives
        
        def shuffleWord(self): # alle buchstaben miteinander vermischen
            letterList = list(self.word)
            letterList[0] = letterList[0].upper() #den ersten Buchstaben des Wort groß machen als kleiner Tipp
            random.shuffle(letterList)
            self.shuffledWord = ''.join(letterList)

        def removeLife(self): # Leben entfernen für Spiellogik
            self.lives -= 1


    def getRandomWord():
        words = []
        with open("wordlist.txt", "r") as fa:
            lines = fa.read().splitlines()

            for line in lines:
                if len(line) > 3 and len(line) < 8: # Wörter mit 4 - 7 Zeichen werden nur genommen, damit es nicht zu schwierig wird.
                    words.append(line)

        randomWord = random.choice(words)
        
        return randomWord


    def checkCondition(guess, word): #kleines Unterprogramm, dass das geratene Wort auf sprachliche Richtigkeit überprüft
        if len(guess) != len(word):
            return "Die Länge deines Wortes stimmt nicht mit der Länge des Wortes überein"
        
        sortedGuess = list(guess)
        sortedWord = list(word)
        
        sortedWord.sort() # sortedGuess und sortedWord sind identisch, wenn bei der eingabe alle Buchstaben vorkommen, die auch im Wort vorkommen, welches zu erraten ist
        sortedGuess.sort()

        if sortedGuess != sortedWord: # Wenn die listen nicht identisch sind, besitzt das geratene Wort nicht die gleichen Buchstaben wie das zu erratene Wort
            return "Dein Wort besitzt Buchstaben, die nicht in der Lösung vorkommen"

        return True


    randomWord = getRandomWord()
    #print(randomWord)

    game = ScrambleGame(randomWord, 5)
    game.shuffleWord()

    won = False


    print("Scramble Game")
    while game.lives > 0:
        condition = False
        print(f"Versuche das folgende Wort zu erraten: {game.shuffledWord}\nLeben übrig: {game.lives}\n")

        while condition != True:
            guess = Element("Guess").element.value.lower()
            condition = checkCondition(guess, game.word)
            if condition != True:
                print(condition)

        if guess != game.word: # damit man auch großbuchstaben eingevben kann
            print("Diese Vermutung war falsch\n")
            game.removeLife()
        else:
            won = True
            break

    if won:
        print("Glückwunsch, du hast gewonnen.")
    else:
        print(f"Du hast verloren, da du keine Leben mehr übrig hast.\nDas wort war {randomWord}")
    </py-script>
</div>

</body>
</html>
Das ist der ganze HTML - CODE
Wäre echt cool wenn mir jemand helfen könnte hab schon viele Leute gefragt, aber die haben auch kein Plan.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

AFAIK: JavaScript im Browser kann keine Dateien vom lokalen Rechner öffnen. Und das ist gut so. Sonst könnte jede Internetseite lustig in deinen Dateien rumfummeln.
Ggf. zeigt die pyscript Dokumentation, wie du mit Dateien arbeitest.

In meinen Augen ist das aber alles nur Spielerei. Wenn man im Browser Scripts ausführen möchte, sollte man auch auf die dafür vorgesehenen Sprachen zurückgreifen.
Antworten