Schrift
[thread]716[/thread]

schach

Leser: 1


<< >> 7 Einträge, 1 Seite
Gast Gast
 2006-04-26 18:10
#7445 #7445
tach allerseits,

ich versuche gerade ne art "browser schach" zu machn.
bin aber in perl (oder im programmieren allgemein) neu.
also das ist so: ich muss die benutzer eingabe irgendwie in den variabeln $fx, $fy, $tx, und $ty, wobei $fx für die zeile und $fy für die spalte von wo die figur kommt steht steht.
$tx ist die zeile und $ty die spalte, wohin die figur ziehen soll (der weise turm steht also zb bei 1 x 1).

wenn ich etwas aus @bedrohte felder einfüge, muss ich den noch den anderen teil entfernern (wenn ihr euch den queltext sieht, wisst ihr, was ich meine) allerdings weis ich nicht wie.

Ich will nur wissen, ob ich richtig angesetzt habe

danke führ die mühe nen scropt aus nen blutigen anfänger zu entbugen ( ;

hier ist der ANSATZ meines scripts



Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
glob $sb{8}{8}="none"

$sb{1..8}{2}="wB"
($sb{1}{1}, $sb{8}{1})="wT";
($sb{2}{1}, $sb{7}{1})="wS";
($sb{3}{1}, $sb{6}{1})="wL"; #push(@Orte,$_);
$sb{4}{1}="wD";
$sb{5}{1})="wK";

$sb{1..8}{7}="sB";
($sb{1}{8}, $sb{8}{1})="sT";
($sb{2}{8}, $sb{7}{1})="sS";
($sb{3}{8}, $sb{6}{1})="sL";
$sb{4}{8}="sD";
$sb{5}{8})="sK";


for($i2=1; $i2 <= 8; $i2++;){
for($n2=1; $n2 <= 8 $n2++;){
$dings[$n2][$i2]="$n2 $i2";
}
}







#bauer
if (

$sb[$fx][$fy] == "wB" &&
($fy+1==$ty) || #normal
($fy==2 && $fy+2==$ty && $sb[$fy][3]!="w*") || #doppelsprung
($fy+1==$ty && $fx+(1||-1)==$tx && $sb[$tx][$ty]=="s*") #schlagen
#el passant kann nicht (korrekt) berücksichtigt werden, da spiel verlauf net gelogt wird
)
{MOVE; push(@bedrohte_felder, $dings[ty+1][$tx+1, $tx-1)]); exit;}











#springer
if (

$sb[$fx][$fy] == "wS" && #alle möglichen springer kombis
((($fx-1==$tx && $fy+2==$ty) || ($fx+1==$tx && $fy+2==$ty) || ($fx-1==$tx && $fy-2==$ty) || ($fx+1==$tx && $fy-2==$ty) || ($fx-2==$tx && $fy+1==$ty) || ($fx+2==$tx && $fy+1==$ty) || ($fx-2==$tx && $fy-1==$ty) || ($fx+2==$tx && $fy-1==$ty) )) && ($sb[$tx][$ty]!== "w*"))

)
{MOVE; push(@bedrohte_felder, $dings[$fx-1==$tx][$fy+2==$ty], $dings[$fx+1==$tx][$fy+2==$ty], $dings[$fx-1==$t][$fy-2==$ty], $dings[$fx+1==$tx], $dings$fy-2==$ty], $dings[$fx-2==$tx][$fy+1==$ty], $dings[$fx+2==$tx][$fy+1==$ty], $dings[$fx-2==$tx][$fy-1==$ty], $dings[$fx+2==$tx][$fy-1==$ty]; exit;}



sub MOVE{
$sb{$fx}{$fy} = $sb{$tx}{$ty}
$sb{$fx}{$fy} = "none"
}


sub PRINT{
for($i=1; $i <= 8; $i++;){
for($n=1; $n <= 8 $n++;)
{print "<a href=chess.pl?fx=$n&fy=$i#txty><img href=$sb{$n}{$i}.png width=61 heigth=60></a>"}
print "<br>"
}
}
renee
 2006-04-26 18:20
#7446 #7446
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest Dir vielleicht erstmal ein paar Grundlagen anlesen, wie z.B. in Strats Einführung in Perl unter http://www.fabiani.net -- Vorträge -- Einführung in Perl

und perlintro.

Um CGI-Skripte zu programmieren, solltest Du Dir das Modul CPAN:CGI.pm anschauen.

Was willst Du damit erreichen:
Code: (dl )
$dings[$fx-1==$tx][$fy+2==$ty]
?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2006-04-26 18:34
#7447 #7447
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
In C würden die Vergleiche zu 0 oder 1 und damit könnte man die Ergebnisse als Arrayindices nehmen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2006-04-26 18:59
#7448 #7448
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Stimmt, geht in Perl ja auch, hat mich im ersten Moment nur verwirrt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2006-04-26 20:18
#7449 #7449
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
schau dir mal den Schach-Zuggenerator in Perl auf meiner HP unter Vortraege an...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
master
 2006-04-27 02:37
#7450 #7450
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Versuchs zuerst mit was kleinerem...
mühle.. oder vier gewinnt...


Schach ist sehr komplex..

ps. schreib ie bedrohten felder in eine liste pro einheit die du gerade prüfst. Du musst das ganze aus der Sicht der Einheiten sehen...
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
docsnyder
 2006-04-27 15:43
#7451 #7451
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich stimme master zu: fange mit etwas kleinerem an, denn bei Schach hast Du einige dicke Brocken zu knacken, z.B.:

- überlege Dir eine "vernünftige" Heuristik, um eine Spielsituation zu bewerten (ist alles andere als einfach). Eine Heuristik brauchst Du (ggf. über mehrere Züge hinweg), damit eine Berechnung des Spielbaumes Dir nicht speichermäßig den Rechner sprengt.

- vermeide Loops, in denen immer wieder die gleiche Spielsituation erreicht wird, sonst wird Dein Programm nicht terminieren. Wenn das gelungen ist, wirst Du merken, daß das immens viel Rechenzeit kostet.

Solltest Du es versuchen, dann viel Spaß!

Gruß, Doc
<< >> 7 Einträge, 1 Seite



View all threads created 2006-04-26 18:10.