Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Servus, ich bin seid Tagen schon an einem Spiel zugange und brauch ein wenig Hilfe bei der Umsetzung. Ich mache aus nem Perl-Scrip eine HTML-Seite. Das Spiel besteht aus 9x9 Eingabefelder, die je eine Ziffer zulassen. Die Werte, die der User eingibt möchte ich in Variablen schreiben lassen, die ich dann zur weiteren Bearbeitung mit Perl verwenden möchte, nur weiß ich nicht wie das Befehl lautet. Brauche ich dafür JavaScript, oder geht das auch mit Perl? Bei Rückfragen einfach schreiben :-) thx im voraus...
Datum: 20.09.2005-15:45

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
Hast Du denn schon etwas Beispielcode? Hast Du Dir schon das CGI Modul angeschaut?Nein, Du brauchst definitiv kein Javascript um etwas in Variablen zu schreiben... Gruss, svenXY
Datum: 20.09.2005-15:48

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Klar hab ich n Script...kopiers einfach und paste es in deinen Editor... :-) #!/usr/local/bin/perl #einfassungen.html einlesen und ausgeben #!/usr/bin/perl use strict; print "Content-type: text/html\n\n"; print <<"END"; <html> </head> <p style="text-align:center;"> <Font size="5"><u>Oo.Sugoku.oO</u></font> </p> <p style="text-align:center;"> <Font size="4">...digital collabse...</font> </p> </head> <body bgcolor=\"CCCCCC\"> <br> <table border=\"2\" heigh=\"200\" width=\"200\" align=\"center\" cellspacing=\"5\" cellpadding=\"3\"> <td bgcolor=\"#000000\"></td> <tr> <th bgcolor=\"#000000\"></th> <td><input id=\"1_1\" name=\"1_1\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_2\" name=\"1_2\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_3\" name=\"1_3\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <th bgcolor=\"#000000\"></th> <td>\n<input id=\"1_4\" name=\"1_4\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td>\n<input id=\"1_5\" name=\"1_5\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td>\n<input id=\"1_6\" name=\"1_6\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <th bgcolor=\"#000000\"></th> <td><input id=\"1_7\" name=\"1_7\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_8\" name=\"1_8\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_9\" name=\"1_9\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <th bgcolor=\"#000000\"></th> </tr> <td bgcolor=\"#000000\"></td> </table> <br> </body> </html> END CGI hab ich mir noch nich angeschaut, bin Perl-Newbee (Neuling) ...
Datum: 20.09.2005-16:17

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Hi, mit dem code unten hast Du Zugriff auf Deine input Felder. Du wirst trotzdem nicht umhin kommen, Dich mit dem CGI Modul zu beschäftigen. Dann wirst Du hoffentlich auch Deinen HTML-String umbauen wollen, denn so ist es ziemlich unübersichtlich.
#!/usr/bin/perl -wuse strict; use CGI qw(:standard); # damit Du auf die Input Felder zugreifen kannst (per param) use CGI::Carp qw(fatalsToBrowser); # Fehlermeldungen im Browser anzeigen (fürs Debugging) print "Content-type: text/html\n\n"; print <<"END"; <html> <head> <p style="text-align:center;"> <Font size="5"><u>Oo.Sugoku.oO</u></font> </p> <p style="text-align:center;"> <Font size="4">...digital collapse...</font> </p> </head> <body bgcolor=\"CCCCCC\"> <br> <!-- FORMULAR!!! --> <form method="POST"> <table border=\"2\" heigh=\"200\" width=\"200\" align=\"center\" cellspacing=\"5\" cellpadding=\"3\"> <td bgcolor=\"#000000\"></td> <tr> <th bgcolor=\"#000000\"></th> <td><input id=\"1_1\" name=\"1_1\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_2\" name=\"1_2\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_3\" name=\"1_3\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <th bgcolor=\"#000000\"></th> <td>\n<input id=\"1_4\" name=\"1_4\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td>\n<input id=\"1_5\" name=\"1_5\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td>\n<input id=\"1_6\" name=\"1_6\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <th bgcolor=\"#000000\"></th> <td><input id=\"1_7\" name=\"1_7\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_8\" name=\"1_8\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <td><input id=\"1_9\" name=\"1_9\" type=\"text\" size=\"1\" maxlength=\"1\"></td> <th bgcolor=\"#000000\"></th> </tr> <td bgcolor=\"#000000\"></td> </table> <!-- SUBMIT BUTTON --><input type=\"submit\" name=\"submit\"> <!-- ENDE FORMULAR!!! --> </form> <br> </body> </html> END if (param('submit')) { # wurde submit angeklickt? for (1..9) { # gehe durch alle 1_1 bis 1_9 durch print "1_$_: ",param("1_$_"), '<br>'; # ausdrucken, oder auch Variablen zuweisen } }
Gruss, svenXY
Datum: 20.09.2005-17:20

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Jau, vielen Dank, dass Du dir Zeit für mein Problem genommen hast,...wird mir sicherlich sehr weiterhelfen.
Datum: 20.09.2005-18:54

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Vielleicht auch mal mit nem Template-System wie HTML::Template beschäftigen. Dann kann man Programm schön von Darstellung trennen!
Datum: 21.09.2005-12:32

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Funzt alles prima, nur hab ich jetzt das Bedürfnis deinen Quellcode für alle Felder umzusetzen,...sind schließlich 9x9 Felder und nich 1x9. Wie schreibe ich das? if (param('submit')) { # wurde submit angeklickt? for (1..9) { # gehe durch alle 1_1 bis 1_9 durch print "1_$_: ",param("1_$_"), '<br>'; # ausdrucken, oder auch Variablen zuweisen } In diesem Teil muss was geändert werden, richtig? Hab schon mehrere Sachen ausprobiert, jedoch ohne Erfolg. Ich lass dich auch am Ruhm teilhaben, den ich für mein Spiel erhalte :-)
Datum: 21.09.2005-10:46

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Danke, bin scho selber drauf gekomm :-) ganz einfach ,...mensch mensch bin ich n Noob in Perl ;-)
Datum: 21.09.2005-10:53

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Sehr gut! Hilfe zur Selbsthilfe gebe ich immer am liebsten! Vile Glück noch - und schick mir den link, wenn Dein Spiel fertig ist... svenXY
Datum: 21.09.2005-11:23

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| joa, ich bins wieder... ich hab das ganze nu so geschrieben: if (param('submit')) { # wurde submit angeklickt? for (my $i=1;$i <= 9; $i++) { for (my $j=1;$j <= 9; $j++) { print $i."_".$j . ":" . param($i."_".$j) . '<br>'; # ausdrucken, oder auch Variablen zuweisen } } und nu möchte ich, dass zufallszahlen von 1-9 generiert werden und in die eingabefelder geschrieben werden, nur nich in jedes feld. Ich bräuchte also ... for (my $x=1;$x <= 9; $x++) { for (my $y=1;$y <= 9; $y++) { my $randx=int(rand(9)); my $randy=int(rand(9)); } { richtig? nur wie bekomme ich dir zufallszahlen in die eingabefelder und wie mach ich ihm klar, dass er nicht in jedes Feld ne Zahl schreiben soll, soll ja scließlich irgendwann n rätsel bzw. Spiel werden? Thx
Datum: 22.09.2005-11:56

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
Ich bin mir nicht im Klaren, was genau Du willst... Soll in einige zufällige Felder jeweils eine zufällige Zahl von 1-9 eingefügt werden?
Datum: 22.09.2005-12:17

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
Jaaa, genau das möchte ich :-) also,...das ganze spiel sieht so aus...: Das spielfeld besteht aus 9x9 eingabefeldern. also aus 9 3x3 feldern. also einem quadrat aus 3x3 feldern. In einigen Feldern sollen vom PC generierte zufallszahlen stehen und einige felder sollen leer bleiben, die kann der User dann ausfüllen. Regeln: In einer Zeile sowei in einer Spalte dürfen nur die Zahlen 1-9 stehen und dürfen sich nicht wiederholen. Das gleiche gillt für jedes der 3x3 felder. (Nur Zahlen 1-9 und nur ein mal pro 3x3-Feld). Bei Rückfragen bitte an mich wenden :-)
Datum: 22.09.2005-12:37

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Im Wesentlichen musst Du erst per srand festlegen, in welche Felder Du Zahlen reinschreiben willst. Falls Du noch das 1_1 bis 9_9 Format verwendest, wäre das also x mal (x ist die Anzahl der Felder, die Du ausfüllen möchtest) srand für die X-Achse und die Y-Achse plus eventuell einige mehr wenn Du eine Kombination aux X_Y zufällig zweimal erhälst. Daraus baust Du Dir einen Hash. Dann generierst Du für jedes Paar im Hash einen Zufallswert und zuletzt trägst Du die Werte an der richtigen Stelle in Dein Formular ein. Dazu ist es wahrscheinlich einfacher, mit dem CGI-Modul zu arbeiten und nicht Perl und HTML code so zu mischen, wie Du es bisher getan hast. Möglich ist es, aber eben komplizierter und schwerer zu lesen. svenXY
Datum: 22.09.2005-13:06

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
OK, hier ist mal ein wenig Beispielcode, allerdings für ein 3x3 Feld (das Ganze auf 9 x 3x3 zu bringen ist dann Deine Aufgabe...)
#!/usr/bin/perl -wTuse strict; use CGI qw(:standard *table); # einfacherer Aufruf von Methoden use CGI::Carp qw(fatalsToBrowser); # Fehlermeldungen im Browser anzeigen my $filled = 4; # 4 Felder sollen ausgefllt werden my %fields; print header, start_html('-title' =>'a game I still don\'t understand'); for (1..$filled) { # Zufallswerte für (4) zufällige Felder generieren my $a =int(rand(srand)*3)+1; my $b = int(rand(srand)*3)+1; my $value = int(rand(srand)*9)+1; $fields{$a . '_' . $b} = $value; } print start_table({'-border' => 1}); # Tabelle erzeugen foreach my $a (1..3) { print Tr(); # Tabellenzeile erzeugen foreach my $b (1..3) { # Tabellenzelle erzeugen print td( textfield( # <INPUT> tag erzeugen '-size' => 1, '-maxlength' => 1, '-name' => $a . '_' . $b, '-value'=> $fields{$a . '_' . $b} ) ), "\n"; } } print end_table, end_html;
Das sollte Dir weiterhelfen.Der code sieht so auch wesentlich übersichtlicher aus und Du musst kaum HTML mit Perl Code mischen. Gruss, svenXY
Datum: 22.09.2005-14:03

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| Das is nicht so schlimm, dass du das Spiel nicht verstehst. Ich schicks dir, bzw. packs ins Forum sobald es fertich is. Dann schaust du es dir an und sachst....ahsooo...:-) Thx für den Quellcode, ich solle die Rechte für das Spiel an dich übergben, schließlich hast du es ja fast ganz allein geschrieben. Thx
Datum: 22.09.2005-14:46

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
| kannst mich ja in den credits erwähnen...
Datum: 22.09.2005-15:17

|
re: Probs mit Perl-HTML-Spiel
|
Seitenanfang |
und? isses fertig? svenXY
Datum: 17.10.2005-14:56

|