PHP :: Aufgabe #248
1 Lösung

Zufällige Buchstaben für Stadt-Land-Fluss
Anfänger - PHP
von charlyP
- 26.03.2020 um 00:24 Uhr
Es soll ein beliebiger Buchstabe des Alphabets (ohne Umlaute) ausgegeben werden und dann auf Anforderung des Nutzers immer wieder ein weiterer Buchstabe, wobei jeder Buchstabe des Alphabets nur ein Mal ausgegeben werden darf.
Viel Spaß
Viel Spaß
Lösungen:
How it works:
Der User führt das Skript aus.
Es wird - sofern noch nicht geschehn die "letters.json" Datei dupliziert ("game.json").
Aus der "game.json" Datei wird dann ein zufälliger Buchstabe entfernt und ausgegeben.
Sollten alle Buchstaben aufgebraucht sein, so wird automatisch ein neues Spiel begonnen.
Der User hat zudem die Möglichkeit als Parameter "reset" zu übergeben für einen manuellen Neustart des Spiels.
main.php
PHP-Code
letters.json
JavaScript-Code
Der User führt das Skript aus.
Es wird - sofern noch nicht geschehn die "letters.json" Datei dupliziert ("game.json").
Aus der "game.json" Datei wird dann ein zufälliger Buchstabe entfernt und ausgegeben.
Sollten alle Buchstaben aufgebraucht sein, so wird automatisch ein neues Spiel begonnen.
Der User hat zudem die Möglichkeit als Parameter "reset" zu übergeben für einen manuellen Neustart des Spiels.
main.php

<?php // remove script name array_shift($argv); // Handle missing file if (!file_exists('letters.json')) { die('Error: "letters.json" does not exist.' . PHP_EOL); } // Manual restarting the game or missing game.json file if ((isset($argv[0]) && $argv[0] === 'reset') || !file_exists('game.json')) { echo 'Manual restart.' , PHP_EOL; copy('letters.json', 'game.json'); } // get json object $str = file_get_contents('game.json'); $json = json_decode($str); // Starting new game if no letters are left. if (sizeof($json->{'letters'}) === 0) { echo 'All letters were used. Starting new game.' , PHP_EOL; copy('letters.json', 'game.json'); $str = file_get_contents('game.json'); $json = json_decode($str); } // get next random letter $key = array_rand($json->{'letters'}); $letter = $json->{'letters'}[$key]; // remove used letter unset($json->{'letters'}[$key]); $json->{'letters'} = array_values($json->{'letters'}); file_put_contents('game.json', json_encode($json)); // output echo 'Next letter is: "' , $letter , '" ' , PHP_EOL , 'Remaining: ' , sizeof($json->{'letters'}) , PHP_EOL;
letters.json

{ "letters": [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ] }
Konsolenausgabe:
php main.php
Next letter is: "X"
Remaining: 24
php main.php
Next letter is: "L"
Remaining: 23
php main.php
Next letter is: "M"
Remaining: 22
php main.php
Next letter is: "J"
Remaining: 21
php main.php reset
Manual restart.
Next letter is: "H"
Remaining: 25
php main.php
Next letter is: "S"
Remaining: 24
php main.php
Next letter is: "K"
Remaining: 23