Hey,
ich finde es cool, dass du an einer Würfelfunktion gewerkelt hast Ich habe die einfache Version meiner Würfelfunktion mal hier im Forum gepostet. Da mal nachgefragt wurde, ob ich meine umfangreichere Version mal posten könnte, mache ich es an dieser Stelle mit leichter verspätung mal. Vielleicht dient dir das auch als eine kleine Inspirationsquelle @orkensplter
PHP: DiceCommand.class.php
<?php
namespace chat\system\command\commands;
/**
* Dice function for hard descisions. Don't cheat!
*
* @author Highscorebreaker Joe
* @copyright 2014 vazabi.de
* @license Macht-Damit-Was-Ihr-Wollt-Lizenz
* @package de.vazabi.chatAddOn
*/
class DiceCommand extends \chat\system\command\AbstractCommand {
public $diceText = "";
public $badgeColor;
public $diceNo = 1;
/**
* @see \chat\system\command\AbstractCommand::$enableHTML
*/
public $enableHTML = true;
public function __construct(\chat\system\command\CommandHandler $commandHandler) {
parent::__construct($commandHandler);
//detect number of dices
if($commandHandler->getParameters() != NULL){
$this->diceNo = intval($commandHandler->getParameters());
if($this->diceNo < 1){
$this->diceNo = 1;
} else if($this->diceNo > 10){
$this->diceNo = 10;
}
}
//dice
$diceResults = array();
for($i = 0; $i < $this->diceNo; $i++){
$diceResults[$i] = mt_rand(1,6);
}
//one dice
if($this->diceNo == 1){
switch($diceResults[0]){
case 1:
$this->diceText = "Da gibt es keine Hoffnung mehr...";
$this->badgeColor = "red";
break;
case 2:
$this->diceText = "Der Wille zählt!";
$this->badgeColor = "orange";
break;
case 3:
$this->diceText = "Da gibt sich jemand mit halben Sachen zufrieden.";
$this->badgeColor = "yellow";
break;
case 4:
$this->diceText = "Wir haben es hier mit einem überdurchschnittlichen Würfler zu tun.";
$this->badgeColor = "black";
break;
case 5:
$this->diceText = "So close!";
$this->badgeColor = "blue";
break;
case 6:
$this->diceText = "Glücksstraehne! Gleich nochmal würfeln!";
$this->badgeColor = "green";
break;
default:
$this->diceText = "Irgendetwas lief schief...";
}
$this->diceText = "würfelt eine <span class=\"badge ".$this->badgeColor."\">".$diceResults[0]."</span>. ".$this->diceText;
}else if($this->diceNo > 1){ //more dices
$pasch = true;
$paschNo = 0;
$diceSum = 0;
foreach($diceResults as $result){
if($this->diceText == ""){ //first value
$this->diceText = $this->diceText . $result;
$paschNo = $result;
}else{ // next values
$this->diceText = $this->diceText ."+". $result;
if($pasch == true && $result != $paschNo){
$pasch = false;
}
}
$diceSum += $result;
}
//resultText
$this->diceText = "würfelt mit [B]".$this->diceNo."[/B] 6-seitigen Würfeln: ".$this->diceText." = <span class=\"badge grey\">".$diceSum."</span>";
//Pasch
if($pasch == true){
switch($paschNo){
case 1:
$this->diceText = $this->diceText." [B]Mehr Pech kann man nicht haben...[/B]";
break;
case 2:
$this->diceText = $this->diceText." [B]Da fährt jemand total auf gerade Zahlen ab[/B]";
break;
case 3:
$this->diceText = $this->diceText." [B]Durchschnittlicher geht's nicht mehr[/B]";
break;
case 4:
$this->diceText = $this->diceText." [B]Würfeltechnik am Rande der Perfektion[/B]";
break;
case 5:
$this->diceText = $this->diceText." [B]Nase[/B]";
break;
case 6:
$this->diceText = $this->diceText." [B][SIZE=16][color=#ff0000]W[/color][color=#f81406]O[/color][color=#f1280d]O[/color][color=#ea3b14]O[/color][color=#e44f1a]M[/color][color=#dd6221]M[/color][color=#d67428]B[/color][color=#d0852e]O[/color] [color=#c2a63c]C[/color][color=#bbb543]O[/color][color=#b5c249]O[/color][color=#aecf50]O[/color][color=#a7da57]M[/color][color=#a1e35d]B[/color][color=#9aec64]O[/color][color=#93f36b]O[/color][color=#8cf872]O[/color][color=#86fc78]O[/color][color=#7ffe7f]O[/color][color=#78fe86]O[/color][color=#72fe8c]O[/color][color=#6bfb93]O[/color][color=#64f79a]O[/color][color=#5df1a1]O[/color][color=#57eaa7]O[/color][color=#50e1ae]O[/color][color=#49d7b5]O[/color][color=#43ccbb]O[/color][color=#3cbfc2]O[/color][color=#35b2c9]O[/color][color=#2ea3d0]O[/color][color=#2893d6]O[/color][color=#2182dd]O[/color][color=#1a70e4]![/color][color=#145eea]![/color][color=#0d4bf1]![/color][color=#0637f8]![/color][/SIZE][/B]";
break;
default:
$this->diceText = "Paschiert halt";
}
}
}
$this->didInit();
}
/**
* @see \chat\system\command\ICommand::getType()
*/
public function getType() {
return \chat\data\message\Message::TYPE_ME;
}
/**
* @see \chat\system\command\ICommand::getMessage()
*/
public function getMessage() {
return $this->diceText;
}
}
Display More
Meine Würfelfunktion kann leider nur mit 6-seitigen Würfeln umgehen, dafür werden die Ergebnisse hübsch angezeigt (finde ich zumindest ) und bei besonders guten (oder schlechten) Leistungen gibt es einen sinnlosen Spruch gratis dazu. Derzeit betreibe ich keinen Chat und habe daher lange nichts mehr für den Chat programmiert. Trotzdem bin ich für Verbesserungsvorschläge offen