| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

07-04-2009, 14:56
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Matix mit PHP?
Hallo,
ich möchte diesen code kürzen.
Für die ensprechende zufallszahl soll dann die anzahl der punkte gesetzt werden.
Meine idee ist ja nicht schlecht, aber ich merke gerade das ich dafür viel mehr IF-Abfragen brauche als mir lieb ist!
Gibts da eine elegante Lösung, ich möchte nicht so einen riesigen code dafür haben
PHP-Code:
$nr=range(1,6); shuffle($nr); # 6 Zufallszahlen erzeugen
$ol=0; $ml=0; $ul=0; $mm=0; $or=0; $mr=0; $ur=0;
if($nr[0]==1){$mm=1;} # Nur die 1 des Würfels
if($nr[0]==2){$ul=1; $or=1;} # Die 2 => unten links und oben rechts
if($nr[0]==3){$ul=1; $mm=1; $or=1;}
if($nr[0]==4){$ol=1; $or=1; $ul=1; $ur=1;}
if($nr[0]==5){$ol=1; $or=1; $ul=1; $ur=1; $mm=1;}
if($nr[0]==6){$ol=1; $ml=1; $ul=1; $or=1; $mr=1; $ur=1;} # Alle Punkte, ausser dem in der mitte
# Punkte für Würfel 1 (links)
if($mm==1){imageFilledRectangle($im,3,3,7,5,$c); imageFilledRectangle($im,4,2,6,6,$c);} # Punkt oben links
if($mm==1){imageFilledRectangle($im,3,9,7,11,$c); imageFilledRectangle($im,4,8,6,12,$c);} # Punkt mitte links
if($mm==1){imageFilledRectangle($im,3,15,7,17,$c); imageFilledRectangle($im,4,14,6,18,$c);} # Punkt unten links
if($mm==1){imageFilledRectangle($im,8,9,12,11,$c); imageFilledRectangle($im,9,8,11,12,$c);} # Punkt mitte rechts
if($mm==1){imageFilledRectangle($im,13,3,17,5,$c); imageFilledRectangle($im,14,2,16,6,$c);} # Punkt oben rechts
if($mm==1){imageFilledRectangle($im,13,9,17,11,$c); imageFilledRectangle($im,14,8,16,12,$c);} # Punkt mitte rechts
if($mm==1){imageFilledRectangle($im,13,15,17,17,$c); imageFilledRectangle($im,14,14,16,18,$c);} # Punkt unten rechts
__________________
ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
|

07-04-2009, 15:12
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Habe neulich einen Würfel in ActionScript gezeichnet. Kannst du dir ja mal ansehen und entsprechend übersetzen:
PHP-Code:
public var radius:uint = 3;
public function draw( score:uint ):void {
if( score<=0 ) {
score = 1;
}
else if( score>6 ) {
score = 6;
}
graphics.clear();
var width_2:uint = width / 2;
var width_4:uint = width / 4;
var width_3:uint = (width * 3) / 4;
var height_2:uint = height / 2;
var height_4:uint = height / 4;
var height_3:uint = (height * 3) / 4;
graphics.lineStyle( 0, 0 );
graphics.beginFill( 0 );
switch( score ) {
case 1:
drawPoint( width_2, height_2 );
break;
case 2:
drawPoint( width_4, height_4 );
drawPoint( width_3, height_3 );
break;
case 3:
drawPoint( width_2, height_2 );
drawPoint( width_4, height_4 );
drawPoint( width_3, height_3 );
break;
case 4:
drawPoint( width_4, height_4 );
drawPoint( width_4, height_3 );
drawPoint( width_3, height_4 );
drawPoint( width_3, height_3 );
break;
case 5:
drawPoint( width_2, height_2 );
drawPoint( width_4, height_4 );
drawPoint( width_4, height_3 );
drawPoint( width_3, height_4 );
drawPoint( width_3, height_3 );
break;
case 6:
drawPoint( width_4, height_4 );
drawPoint( width_4, height_2 );
drawPoint( width_4, height_3 );
drawPoint( width_3, height_4 );
drawPoint( width_3, height_2 );
drawPoint( width_3, height_3 );
break;
}
}
public function drawPoint( x:uint, y:uint ):void {
graphics.drawCircle( x, y, radius );
}
|

07-04-2009, 15:17
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
blöde frage:
warum lädt man nicht einfach eine fertige grafik, anstatt dauernd ein bild mit 1-6 punkten neu zu pinseln?
__________________
-
|

07-04-2009, 15:21
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Zitat:
Original geschrieben von Wurzel
blöde frage:
warum lädt man nicht einfach eine fertige grafik, anstatt dauernd ein bild mit 1-6 punkten neu zu pinseln?
|
OffTopic: Da frag' ich mich grad auch ... aber vielleicht weil jedes Mal neuzeichnen ist so cool 
|

07-04-2009, 15:30
|
 |
schmalle
  Ich Root, Du nix
|
|
Registriert seit: Jun 2001
Ort: Egelsbach FFM
Beiträge: 9.170
|
|
Was ist ein Würfel?
|

07-04-2009, 16:58
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
|
warum lädt man nicht einfach eine fertige grafik, anstatt dauernd ein bild mit 1-6 punkten neu zu pinseln?
|
Ist eindeutig cooler
Nee, ich hab ein haufen von den bildchen und jetzt wollte ich die mal abschaffen....ewig rumsuchen, welches bildchen gehört zu welchem script.....ausserdem ist dieses PNG-Format auch wesentlich kleiner und grafisch perfekt...ganz zu schweigen von dem verwaschenen JPG-Format.
@PHP-Desaster
Das hatte ich auch so vor mit dem switch case, aber da brauche ich eben 6 mal den code und das ist dann schon etwas groß.
Ich dachte man kann da sowas wie ne matrix machen, wird aber codemäßig auf die gleiche länge rauskommen, denke ich.
Naja kann man nix machen
Danke an die helfenden Hände
__________________
ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
|

07-04-2009, 17:08
|
 |
schmalle
  Ich Root, Du nix
|
|
Registriert seit: Jun 2001
Ort: Egelsbach FFM
Beiträge: 9.170
|
|
Zitat:
Original geschrieben von RamonaS
...ewig rumsuchen, welches bildchen gehört zu welchem script.....
|
ich hab mal gehört man können mit passenden Dateinamen und einer gewissen Ordnerstruktur dieses Problem lösen. Aber trotz langjähriger Erfahrung in diesem Business habe ich natürlich keine Ahnung. Es würde mir auch niemand glauben, dass solche Spielchen ein potentieller Performancekiller sind, weil ich noch nie einen Server gesehen habe, auf dem mehr als drei Leute gleichzeitig unterwegs sind.
Schönen Feierabend ;-)
|

07-04-2009, 17:26
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Original geschrieben von RamonaS
Ist eindeutig cooler
Nee, ich hab ein haufen von den bildchen und jetzt wollte ich die mal abschaffen....ewig rumsuchen, welches bildchen gehört zu welchem script.....
|
Wenn du ewig rumsuchen musst, würd ich an deiner Stelle mal die Ordnerstruktur überdenken.
|

07-04-2009, 17:45
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Du kannst den Code zum Zeichnen eines Würfels doch wiederverwenden, indem du einen X- und Y-Offset mit hineinimplementierst.
Aber die anderen haben natürlich recht, vielleicht solltest du das Zeichnen lieber lassen und Bilder verwenden.
|

07-04-2009, 20:16
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Ok also ich hab das jetzt so verstanden, wer die image-funktion von php benutzt bekommt grundsätzlich 239 jahre einzelhaft und muß in dieser zeit asp lernen :-)
Wer bilder braucht für captcha der soll sich 13 stück anfertigen und diese dann per zufall ausgeben.
Ordnerstruktur überdenken:
Ähmm hab ich doch, hab soweit alles bilderzeugs in einen einzigen ordner geworfen, dann weiß ich wo der kram zu finden ist....aber welches bildchen zu welchem script gehört weiß ich immer noch nicht.
wie soll ich ein bild so benennen das ich es zuordnen kann....einige bilder werden im kontakt.php, gaestebuch.php und in noch 3-10 anderen scripten benutzt...
Noting for notgood :-)
__________________
ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
|

07-04-2009, 20:29
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zitat:
|
Ok also ich hab das jetzt so verstanden, wer die image-funktion von php benutzt bekommt grundsätzlich 239 jahre einzelhaft und muß in dieser zeit asp lernen :-)
|
nur wenn sie exzessiv benutz wird
Zitat:
|
Wer bilder braucht für captcha der soll sich 13 stück anfertigen und diese dann per zufall ausgeben.
|
dafür gibt es andere lösungen. mit nur einem(!) bild
Zitat:
|
wie soll ich ein bild so benennen das ich es zuordnen kann....einige bilder werden im kontakt.php, gaestebuch.php und in noch 3-10 anderen scripten benutzt...
|
da muss man sich ggf. mal die mühe machen und aufräumen. unterordner wären eine lösung.
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

07-04-2009, 20:52
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
|
nur wenn sie exzessiv benutz wird
|
Wird es ja nicht, es geht um die erzeugung eines einzigen bildes, da sind dann 3 solche würfelchen drinne.
Nachdem ich bei google-iamge sogar meine unwichtigen würfelbilder gefunden habe, dachte ich mir ich stell das mal ab :-)
Zitat:
|
dafür gibt es andere lösungen. mit nur einem(!) bild
|
Sag ich doch...meine idee wäre 1 bild statt 6 stück und bei jedem aufruf oder f5 sind da andere würfelzahlen drinn.
Zitat:
|
da muss man sich ggf. mal die mühe machen und aufräumen. unterordner wären eine lösung.
|
Das hatte ich soweit alles fertig, mit unzähligen unterordner und richtigem durcheinander!
Ich habe jetzt ein ordner der nennt sich module, und dort sind nur die php scripte drinn...alle bilder, smilies usw habe ich zentrall alle zusammen in einem einzigen ordner drin....da ist halt der nachteil, man weiß nicht immer welchers bild jetzt von wievielen scripten benutzt wird.....naja nach 2 wochen weiß ich das noch aber nach 2 monaten wirds langsam kritisch
__________________
ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
|

07-04-2009, 22:55
|
|
Peacie
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 341
|
|
wieviel langeweile kann man haben
hab grad mal quick and dirty ein script gebastelt, was einen würfel per zufall erstellt. das ganze könnte man jetzt noch strukturieren und in eine funktion bauen, aber dafür hab ich grad keine lust
PHP-Code:
$zahl=mt_rand(1,6);
// positionen der Punkte
$w[1]=array(3,3);
$w[2]=array(3,9);
$w[3]=array(3,15);
$w[4]=array(13,3);
$w[5]=array(13,9);
$w[6]=array(13,15);
$w[7]=array(8,9);
// Zusammensetzen der Punkte
$dw[1]=7;
$dw[2]="1,6";
$dw[3]="1,6,7";
$dw[4]="1,3,4,6";
$dw[5]="1,3,4,6,7";
$dw[6]="1,2,3,4,5,6";
$wuerfel=explode(",",$dw[$zahl]);
Header("Content-type: image/png");
$image = imagecreate(21,21);
$d=imagecolorallocate($image,255,255,255);
$c=imagecolorallocate($image,0,0,0);
imagealphablending($image, 1);
imagecolortransparent($image);
for ($i=0;$i<=count($wuerfel)-1;$i++)
{
$x=$w[$wuerfel[$i]][0];$y=$w[$wuerfel[$i]][1];
imagerectangle($image,0,0,20,20,$c);
imagefilledrectangle($image,$x,$y,$x+4,$y+2,$c);
imagefilledrectangle($image,$x+1,$y-1,$x+3,$y+3,$c);
}
imagepng($image,"./wuerfel.png");
readfile("./wuerfel.png");
Geändert von Peacie (07-04-2009 um 22:57 Uhr)
|

07-04-2009, 23:11
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Eine Minute googeln, 30 Sekunden programmieren. Fertig.
PHP-Code:
<?php
header('Location: http://www.random.org/dice/dice' . rand(1, 6) . '.png');
?>
Würde mir die Grafiken natürlich auf den eigenen Server ziehen bzw. eigene erstellen und statt Location den richtigen Content-Type Header senden gefolgt von einem readfile(). Mehr Mühe ist die Sache doch nicht wert.
|

07-04-2009, 23:15
|
|
Peacie
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 341
|
|
wo ist jetzt bitte der unterschied zu den eigenen bildern auf dem server, die der te ja nicht will?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|