Tutorial: Würfelspiel

Tutorial Übersicht Tutorial Übersicht  >>  ET-Chat ET-Chat

Würfelspiel
Von: Fizzy Lemon am: 27.12.2021 - 10:25 Gelesen 3483 x gelesen Tutorial drucken

Werbung:
ALL INKL



Ein einfaches Würfelspiel:

In der chat.tpl.html einen Button hinzufügen:

<div id="form_right">
<img id="link_sagen" class="img_button" src="img/Checked.png" width="32" height="32" border="0" alt="<?php echo $this->lang->sagen[0]->tagData; ?>" title="<?php echo $this->lang->sagen[0]->tagData; ?>" />   
<img id="link_smileys" class="img_button" src="img/Smiley_Cool.png" width="32" height="32" border="0" alt="<?php echo $this->lang->smileys[0]->tagData; ?>" title="<?php echo $this->lang->smileys[0]->tagData; ?>" />   
<img id="link_color" class="img_button" src="img/Colors.png" width="32" height="32" border="0" alt="<?php echo $this->lang->color[0]->tagData; ?>" title="<?php echo $this->lang->color[0]->tagData; ?>" />   
Code Alles auswählen
<img id="wuerfel" class="img_button" src="img/cube.png" width="32" height="32" border="0" alt="Würfel" title="Würfel" />
   
<img id="link_prop" class="img_button" src="img/Display.png" width="32" height="32" border="0" alt="<?php echo $this->lang->prop[0]->tagData; ?>" title="<?php echo $this->lang->prop[0]->tagData; ?>" />
      
<img id="link_logout" class="img_button" src="img/Delete_big.png" width="32" height="32" border="0" alt="<?php echo $this->lang->logout[0]->tagData; ?>" title="<?php echo $this->lang->logout[0]->tagData; ?>" />
</div>

---

Dann die wuerfel.class.php im class-Verzeichnis komplett neu erstellen. Code hier:
Code Alles auswählen
<?php
 
class wuerfel extends DbConectionMaker
{

   public function __construct (){
      
      parent::__construct();


      session_start();

      header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0');
      header('content-type: application/json; charset=utf-8');

     

       $Wuerfelauge=rand(1,6);
       $this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid , etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat)
       VALUES ( 1, '".$_POST['username']." würfelt eine ".$Wuerfelauge."', 'color:#".$_SESSION['etchat_'.$this->_prefix.'syscolor'].";font-weight:normal;font-style:normal;', ".date('U').", ".(int)$_POST['room'].", 0)", false);
   }

}


---

Anschließend in der chat.js am besten nach der Farbauswahl den Buttonaufruf ablegen:

(...)
// ueberwachung des Klicks auf die Farbentabelle
Event.observe('farben_tab', 'click', function(event){
if(Event.element(event).id!=""){
// Farbe Hex in Dec umwandeln
var rd = hex2dec(Event.element(event).id.slice(0, 2));
var gd = hex2dec(Event.element(event).id.slice(2, 4));
var bd = hex2dec(Event.element(event).id.slice(4, 6));
// Slider entsprechend der Auswahl verschieben
slider_red.setValue(rd/255);
slider_green.setValue(gd/255);
slider_blue.setValue(bd/255);
}
} );
}

// Ist dass Fenster bereits sichtbar?
if($(self.win_color.getId()).style.display=='none'){
self.win_color.show();
self.win_color.toFront();
}
else self.win_color.close();


}

Code Alles auswählen
//Würfel
$("wuerfel").onclick = function(){
new Ajax.Request("./?wuerfel", {
onSuccess: function(){},postBody: "username="+self.username});
}


};


Jeweils das hervorgehobene beachten.


Wen es stört, dass der Buttondruck nicht sofort eine Reaktion auslöst, kann auch zu diesem Kniff greifen: Man spielt mit dem Buttondruck eine MP3 ab, die ein Würfelgeräusch abspielt.

Dazu muss man folgendermaßen vorgehen:

In der chat.js erweitert man den Soundbuffer:

// Init Sound --------
try{
window.AudioContext = window.AudioContext || window.webkitAudioContext;
this.soundManager=new AudioContext();

//creating a new request
var a_request1 = new XMLHttpRequest();
a_request1.open("GET",'./sound/sound_privat.mp3',true);
a_request1.responseType= 'arraybuffer';
a_request1.onload = function(){
//take the audio from http request and decode it in an audio buffer
self.soundManager.decodeAudioData(a_request1.response, function(buffer){
self.audioBuffer.push(buffer);
});

};
a_request1.send();

var a_request2 = new XMLHttpRequest();
a_request2.open("GET",'./sound/sound_all.mp3',true);
a_request2.responseType= 'arraybuffer';
a_request2.onload = function(){
//take the audio from http a_request2 and decode it in an audio buffer
self.soundManager.decodeAudioData(a_request2.response, function(buffer){
self.audioBuffer.push(buffer);
});

};
a_request2.send();

Code Alles auswählen
var a_request3 = new XMLHttpRequest();
a_request3.open("GET",'./sound/rolling_dice.mp3',true);
a_request3.responseType= 'arraybuffer';
a_request3.onload = function(){
self.soundManager.decodeAudioData(a_request3.response, function(buffer){
self.audioBuffer.push(buffer);
});

};
a_request3.send();


} catch(e){
console.log("No audio-support from browser!");
}


und fügt den Würfelbutton nach danach ein:
Code Alles auswählen
//Würfel
$("wuerfel").onclick = function(){
if(self.sound_status=="all"){
var audio_source = self.soundManager.createBufferSource();
audio_source.buffer = self.audioBuffer[2];
audio_source.connect(self.soundManager.destination);
audio_source.start(0);
}
new Ajax.Request("./?wuerfel", {
onSuccess: function(){},postBody: "username="+self.username});
}


Dann sollte bei Buttondruck ein Würfelgeräusch zu hören sein, vorausgesetzt, man hat die Sounds auf ALLE. Wer nur privat oder gar keine Soundausgaben möchte, hört das auch nicht. Dadurch hat der Nutzer eine direkte Reaktion und wundert sich nicht darüber, dass das Würfelergebnis erst auftaucht, wenn der Chatinhalt aktualisiert wird. Die MP3 müsst ihr euch besorgen oder selber machen.

War dieses Tutorial hilfreich für dich?
Nur Mitglieder können abstimmen!
Für 2 der Mitglieder war es hilfreich.
Für 0 der Mitglieder nicht.


Login
Name oder Email

Passwort



Noch kein Mitglied?
Klicke hier um dich zu registrieren

Passwort vergessen?
Um ein neues Passwort anzufordern klicke hier.
Wer ist im Chat?
Gastzugang geschlossen!

0 User im Chat
Teamspeak
Harlekins Welt
Eingangshalle
« ★ » Allgemein « ★ »
Laberecke
Harlekin
Quasselbox
Up & Download
« ❑ » Intern « ❑ »
Besprechung
« ● » Abwesend « ● »
kurz < 30 Min.
lang > 30 Min.

Discord

Joinen
Slider
Security
Geschützt durch:
HP-Detect
Werbung
ALL-INKL

Über HP-4-Fun

HP-4-Fun

ist ein privates, nicht kommerzielles, Projekt, welches 2019 von Rolly8-HL und mir (Harlekin) gestartet wurde.

HP-4-Fun 2.0 ist nur für den Eigenbedarf geschrieben worden. Ein Downloadpaket von HP-4-Fun 2.0 wird es nicht geben!

Letzte Kommentare

Informationen

Zuletzt Online