Ich habe gerade Perl und PerlTK gelernt.
Da habe ich mir gedacht es wäre ein schönes Projekt ein kleines Spiel zu programmieren, und es ist auch schon fertig.
Doch es gibt ein Problem, ich habe einen Frame für das Spielfeld erstellt, und wenn man jetzt seine Figur steuert muss ich natürlich immer wieder diesen Frame löschen.
Das sieht nur leider nicht so schön aus, und bei Leuten mit wenig Arbeitsspeicher sieht es echt übel aus.
Da ja der ganze Frame(Der nur Bilder enthält) immer wieder gelöscht wird, bei jeder Bewegung.
Ich habe mir sagen lassen das es auch irgendwie gehen soll das, dass löschen nicht zu sehen ist, weiß einer vielleicht wie ?
Danke im vorraus.
M.f.G. Name
User since
2004-03-22
5697
Artikel
ModeratorIn + EditorIn
ich hab keine ahnung von tk aber jemand hat hier dein problem schon gelöst. suche mal nach pentris(tetris-clone) der hier unter projekte vorgestellt wurde.
User since
2003-08-04
5246
Artikel
ModeratorIn
ohne genauere infos kann ich nur wenig sagen...
wenn du das ganze mit labels oder buttons und grid machst, dann kannst du dir einen button oder so herausholen und mit configure den hintergrund aendern, z.B.
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
#! /usr/bin/perl
use warnings;
use strict;
use Tk ();
use Tk::Dialog ();
my $mw = MainWindow->new();
my $frame = $mw->Frame()->pack();
use vars qw($Grey $Red);
$Grey = '#aaaaaa';
$Red = '#ff0000';
my @fields = ();
for my $j (1..20) {
my @row = ();
for my $i (1..10) {
push (@row, $frame->Label(-text => ' ', -background => $Grey,
-border => 1, -relief => 'sunken'));
} # for
push (@fields, \@row);
my ($first, @other) = @row;
$first->grid(@other);
} # for j
&SetColor(\@fields, 4,2, $Red);
for my $j (1..3) {
&SetColor(\@fields, 3,$j, $Red);
} # for
$mw->after('2000', sub {
for my $j (1..3) {
&SetColor(\@fields, 3,$j, $Grey);
&SetColor(\@fields, 4,$j, $Red);
} # for
&SetColor(\@fields, 5,2, $Red);
});
&Tk::MainLoop;
# ------------------------------------------------------------
sub SetColor {
my ($fields, $i, $j, $color) = @_;
$fields->[$i]->[$j]->configure(-background => $color);
} # SetColor
User since
2003-08-04
5873
Artikel
ModeratorIn
Falls Du eine Canvas verwendest (wie ich bei Pentris), dann kannst Du Elemente darauf verschieben.
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
User since
2003-08-04
14371
Artikel
ModeratorIn
Ein schöneres Widget als Canvas ist
Tk::Zinc man muss sich zwar erst einarbeiten, bietet aber ziemlich viele Möglichkeiten. Besonders gut ist die Gruppierungsmöglichkeit!