SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.10.2003, 02:13:15
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 58
Beiträge: 1.236
Backgammon

Hallo zusammen,

ich würde gern ein 2-Spieler-Backgammon-Spiel mit PHP/MySQL entwickeln.

Beim Klicken auf ein <input type='image' src='...'> werden die x- und y- Koordinaten übertragen.

Das brachte mich auf folgende Idee:
Ich generiere als Image-Source ein PNG, dass per GD-Funktionen erstellt wird.

Folgender Code demonstriert die Funktionsweise mit einem Spielstein.
PHP-Code:
<?php
    
// index.php
    
if($_POST['kord_x']) // Wo wurde geklickt?
    
{
        
$x $_POST['kord_x'];
        
$y $_POST['kord_y'];
        if(
$y <= 170)
        {
            for(
$i 0$i 210$i += 35)
            {
                if(
$x >= 15 $i && $x <= 45 $i)
                {
                    
$pos 12 $i 35;
                }
                if(
$x >= 255 $i && $x <= 285 $i)
                {
                    
$pos $i 35;
                }
            }
        }
        elseif(
$y >= 230)
        {
            for(
$i 0$i 210$i += 35)
            {
                if(
$x >= 15 $i && $x <= 45 $i)
                {
                    
$pos 13 $i 35;
                }
                if(
$x >= 255 $i && $x <= 285 $i)
                {
                    
$pos 19 $i 35;
                }
            }
        }
    }

    echo 
"<font size='2' face='Verdana'>Zunge Nr.: ".$pos."</font>";
    echo 
"<form action='index.php'method='post'>";
    echo 
"<input type='image' src='brett.php?pos=".$pos."' name='kord'>";
    echo 
"</form>";
?>



<?php
    
// Das Spielbrett:
    // brett.php

    // Spielbrett zeichnen
    
$brett_breite 480;
    
$brett_hoehe  400;
    
$im imagecreate($brett_breite,$brett_hoehe);
    
$brett_farbe imagecolorallocate($im125125125);
    for(
$i 0$i 2$i++)
    {
        for(
$j 0$j 12$j++)
        {
            
$abstand_zunge_x 35;
            
$extra_abstand   0;
            
$j $extra_abstand 30 "";

            
$i == $mess_p = array(15 $extra_abstand $j $abstand_zunge_x,1045 $extra_abstand $j $abstand_zunge_x,1030 $extra_abstand $j $abstand_zunge_x,160) : $mess_p = array(30 $extra_abstand $j $abstand_zunge_x,24045 $extra_abstand $j $abstand_zunge_x,39015 $extra_abstand $j $abstand_zunge_x,390);

            if(
$j == $i)
            {
                
$hell imagecolorallocate($im200200200);
                
imagefilledpolygon($im$mess_p$hell);
            }
            else
            {
                
$dunkel imagecolorallocate($im100100100);
                
imagefilledpolygon($im$mess_p$dunkel);
            }
        }
    }
    
// Spielstein positionieren
       
if($_GET['pos'] > 0)
    {
        if(
$_GET['pos'] <= 12)
        {
            
$pos = (12 $_GET['pos']) * 35;
            
$pos_y 0;
        }
        if(
$_GET['pos'] <= 6)
        {
            
$pos +=  30;
            
$pos_y 0;
        }

        if(
$_GET['pos'] > 12)
        {
            
$pos = ($_GET['pos'] - 13) * 35;
            
$pos_y 350;
        }
        if(
$_GET['pos'] >= 19)
        {
            
$pos += 30;
        }

        
$stein_hell imagecolorallocate($im255255255);
        
imagearc($im30 $pos25 $pos_y30300360$stein_hell);
        
imagefill($im30 $pos25 $pos_y$stein_hell);
    }
    
imagepng($im);
    
imagedestroy($im);
?>
Was haltet Ihr von diesem Ansatz?

Lauf ich da in eine Sackgasse?

Bin für jeden Tipp dankbar.

Grüsse

chris17
Mit Zitat antworten
  #2  
Alt 03.10.2003, 11:33:36
Matthias Matthias ist offline
Moderator
 
Registriert seit: Jan 2002
Ort: CologneCity
Alter: 47
Beiträge: 484
Gute Idee!!!

Aber wieso machst du das Brett nicht Bunt?
Stengt ein wenig die Augen an!

Du solltest für die Mozilla und Netscape Browser folgende Zeile einfügen.
PHP-Code:
header("Content-Type: image/png"); 
Überlege ob du überhaupt die Koordinaten benötigst. Hab das Spiel schon ewig nicht mehr gespielt, aber es müsste doch ausreichend sein, dass du die Zacke auswählst wo der Stein ist und dann die Zacke wo er hin soll?? Hmmmm!!!

Andere Idee:
Brett als Hintergrund und jeden Stein mit nem Link versehen.
Hat den Vorteil, dass du das Brett nicht immer neu Zeichnen musst. Einmal abspeichern und fertig. Die Steine sind mit <div> einfach zu positionieren.
Mit Zitat antworten
  #3  
Alt 03.10.2003, 11:39:03
Matthias Matthias ist offline
Moderator
 
Registriert seit: Jan 2002
Ort: CologneCity
Alter: 47
Beiträge: 484
Hast du dir auch schon gedanken zum Speichern der Position der Steine gemacht?
Mit Zitat antworten
  #4  
Alt 04.10.2003, 15:29:11
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 58
Beiträge: 1.236
Hallo Matthias,

Bis jetzt gibt's drei Tabellen:
- je eine für die hellen und dunkle Steinen -> id und die Nummer der Zunge auf der sich der Stein befindet.
- Eine Tabelle für die beiden Würfel und die Information wer am Zug ist

Ich denke darüber nach Tabellen für mögliche/gültige Spielzüge anzulegen, die sich aus der aktuellen Spielposition ergeben. -> Schwarz würfelt 3/5, klickt auf den Stein mit dem gezogen werden soll, aus der Tabelle geht hervor, dass nur mit der 5 ein gültiger Spielzug möglich ist. Das könnte die Anzahl der Klicks verringern. Wären beide Zahlen möglich, käme eine Abfrage(Popup?) welcher Zug gewünscht ist.
Der Fall, dass ein Zug rückgängig gemacht werden kann, muss auch noch bedacht werden. Und, und, und...

Nun ja, ich hab' noch keinen endgültigen Plan und keine Erfahrung mit "Spieleprogrammierung".


Bisheriger Spielablauf:
-> Weiss ist am Zug und hat das <input type='image' src='brett.php'> vor sich.

-> Schwarz sieht zur gleichen Zeit das Spielfeld als Bild <img src='brett.php'>, die Seite wird per "refresh" alle paar Sekunden neu geladen.

-> Weiss hat seinen Zug gemacht, die Tabellen mit neuen Positionen und Würfel-Infos werden in der DB aktualisiert. Weiss sieht jetzt das Spielbrett als normale Grafik, und die Seite wird alle paar Sekunden neu geladen.

-> Schwarz sieht nun das aktuelle Spielfeld als <input type='image' src='brett.php'> und kann seine Steine ziehen.


Nun ja, da gibt's noch viel Arbeit. Vielleicht knöpfe ich mir erstmal Tic-Tac-Toe vor :-))

Vielen Danke für Dein Feedback.

Gruss

Christian

P.S.: Ach ja, wenn ich das Spiel fertig bekomme, dann gibt's noch ein Farbeditor für die Steine und das Brett :-)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36:42 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt