Forum | | | | - page 1 - |
| Nico Madysa | allô miteinander!
j'ai mon Programme la fois sur cela Minimum reduziert, chez dem es toujours deux merkwürdige Erscheinungen gibt: KompilierenMarqueSéparation $H Messages.ph
proc Zeige_Kugeln
declare ly% , gueltig%
alle Buttons durchgehen
whileloop 0,9
ly% = &loop
whileloop 0,9
if xor(not(&loop mod 9),not(ly% mod 9)) or (not(&loop) and (ly% = 9))
Rand deaktivieren
EnableWindow But&[&loop,ly%],0
elseif (&loop mod 9) and (ly% mod 9)
Mittelfeld aufdecken
ShowWindow(But&[&loop,ly%],0)
endif
Die Kullern anzeigen
if between(&loop,1,8,ly%,1,8)
SetTimer 0 : waitinput : KillTimer
if feld%[&loop - 1,ly% - 1]
DrawPic PTrue&,&loop * 48,ly% * 48;-1
endif
endif
EndWhile
EndWhile
Das gemalte ans Hintergrundbild klatschen
PLsg& = Create("hPic",0,"&SCRBMP")
SendMessage(hBack&,~STM_SETIMAGE,0,PLsg&)
SavePic "D:\Dat1.bmp",PLsg&
SavePic "D:\Dat2.bmp",SendMessage(hBack&,~STM_GETIMAGE,0,0)
Zu guter Letzt den deaktivierten Rand wegmachen
whileloop 0,9
ly% = &loop
whileloop 0,9
case xor(not(&loop mod 9),not(ly% mod 9)) : ShowWindow(But&[&loop,ly%],0)
EndWhile
EndWhile
endproc
proc Button
parameters px% , py%
Rand: Bilder, Mitte: normal
ifnot (px% mod 9) and (py% mod 9)
But&[px%,py%] = Create("PicButton",%hWnd,PTrue&,px% * 48,py% * 48,48,48)
else
But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)
endif
endproc
proc Button_2
parameters px% , py%
nur ein Button am Rande ist kein Bild
if (px% = 0) and (py% = 9)
But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)
elseif not((px% mod 9) and (py% mod 9))
But&[px%,py%] = Create("PicButton",%hWnd,PTrue&,px% * 48,py% * 48,48,48)
else
But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)
endif
endproc
proc Bereite_Bilder
Hintergrundbild
PBack& = Create("hNewPic",481,481,$FFFFFF)
StartPaint PBack&
UsePen 0,1,0
whileloop 2,8
Rectangle (48*&loop-1),0 - (48*&loop+1),480
EndWhile
whileloop 2,8
Rectangle 0,(48*&loop-1) - 480,(48*&loop+1)
EndWhile
EndPaint
Bild für die Kullern
PTrue& = Create("hNewPic",48,48,$FFFFFF)
StartPaint PTrue&
UsePen 0,1,0
UseBrush 1,0
Ellipse 2,2,45,45
EndPaint
endproc
proc BuildUp
declare y%
WindowStyle 26
Window 100,50 - 500,520
Hintergrund
hBack& = Create("Bitmap",%hWnd,PBack&,0,0)
alle Buttons
whileloop 0,9
y% = &loop
whileloop 0,9
Button(&loop,y%)
Button_2(&loop,y%)
EndWhile
EndWhile
endproc
proc Platziere_Kugeln
declare rx% , ry%
clear feld%[]
whileloop 4
repeat
rx% = Rnd(8)
ry% = Rnd(8)
until not(feld%[rx%,ry%])
feld%[rx%,ry%] = 1
EndWhile
endproc
declare But&[9,9], feld%[7,7]
declare hBack&,PBack&,PLsg& , PTrue&
Randomize
Bereite_Bilder
BuildUp
Platziere_Kugeln
var e% = 0
whilenot e%
waitinput
if Clicked(But&[9,9])
e% = 1
elseif Clicked(But&[0,9])
Zeige_Kugeln
endif
wend
DeleteObject PBack&
DeleteObject PLsg&
DeleteObject PTrue&
end
Es wird folgendes gemacht: trop Beginn volonté dans qui Matrix champ% quatre zufällig gewählte Werte sur 1 gesetzt (mon Murmeln, siehe plus unten ). cela Staticcontrol, cela im Hintergrund liegt, wird de Buttons überdeckt. Klickt on eh bien sur den Button unten à gauche (avec dem Handle But&[0,9]), so volonté qui Randbuttons deaktiviert et qui mittleren versteckt. avec cela wird qui essenzielle partie qui Hintergrundbitmap sichtbar. puis volonté quatre Kullern aus champ% hingemalt. cela ganze la fenêtre wird dans einer Bitmap abgesichert et qui Hintergrundbitmap transfert, qui Status quo wird alors fixiert. Zum Schluss volonté qui deaktivierten Randbuttons unsichtbar gemacht, seulement qui Ecken et cela Hintergrundbild verbleiben. (qui untere rechte Button finissez cela Programme.)
Problem 1: Im Kompilat manquer de den quatre Murmeln meist quelques. Im Interpreter volonté stets alle quatre angezeigt. si qui la ligne SetTimer 1 : waitinput : KillTimer (Dulcoif) aktiviert wird, volonté aussi im Kompilat alle Kullern angezeigt. Sleep zeitigt aucun Wirkung. Findet es dans getrennten Schleifen statt, dass qui Buttons entfernt et qui Kreise gemalt volonté, so volonté ebenso alle quatre Kreise angezeigt. Doch pourquoi funktioniert qui obere variante pas? un Zeitproblem peux es pas son, là Sleep rien bringt.
Problem 2: on ersetze den Aufruf Button(&loop,y%) par Button_2(&loop,y%). Dadurch est un einziger qui Randbuttons bildlos, mais un Standard-Button. ca hat den unerklärlichen effet, dass qui Hintergrundbitmap seulement encore aus einer schwarzen Surface et dem Button besteht. Wers pas croyez, peux sich qui Bilder absichern laisser. cela Fensterfoto &SCRBMP ist encore réglé, doch qui Bitmap des Static-Controls ist plus que fraglich. Doch pourquoi? |
| | | | |
| | | | | - page 1 - |
| Nico Madysa | Bitteschön, je hoffe, dass dreiunzwanzig Zeilen pas zuviel sommes. KompilierenMarqueSéparationcls 16777215
P& ist das Bild des Buttons
var P& = Create("hNewPic",48,48,$22DD22)
Die Buttons sind h& und g&. Jeder kann ein Text- oder ein Bildbutton sein.
var h& = Create("Button",%hWnd,"Text",0,0,48,48)
var h& = Create("PicButton",%hWnd,p&,0,0,48,48)
var g& = Create("PicButton",%hWnd,p&,48,0,48,48)
var g& = Create("Button",%hWnd,"Text",48,0,48,48)
Der Fensterinhalt wird fotografiert und nach unten versetzt angezeigt.
var Q& = Create("hPic",0,"&SCRBMP")
cls 0 Damit man Bild und Bildschirm unterscheiden kann.
Create("Bitmap",%hWnd,Q&,0,48)
Rest
whilenot IsKey(27)
waitinput
wend
DeleteObject P&
DeleteObject Q&
end
qui faute tritt sur, sobald aussi seulement un einziger normaler Button sur dem Bildschirm sichtbar ist. sommes deux Picbuttons là, so fonctionne alles normal. si qui Textbutton auparavant versteckt wird, funktioniert également alles wunderbar. |
| | | | |
| | | Achso maintenant verstehe je Dein Problem, oui c'est "normal".
Windows weiss pas quelle Pixel derrière* einem Contrôle liegen, je hatte la fois avec Frank par-dessus debattiert mais finde den Fil pas plus.
Im Fazit ist scrbmp (naturellement) "unzuverlässig". ^ ^
Ziehe la fois calc.exe sur Dein hWnd et kopiere cela hWnd ab, calc ist avec chez!
DCs sommes nunmal aucun Pixelspeicher.
Vlt. ist ca avec "AERO" maintenant (quelque chose) anders... |
| | | | |
| | | Nachtrag: Ähnlich: [...] . |
| | | | |
| | | | - page 2 - |
| | Nico Madysa | So ne Doofen Contexte! bien, ensuite muss je puis dans Zukunft aufpassen. merci joli pour qui schnelle la réponse meiner beiden Fragen. |
| | | | |
| | | qui sommes pas doof, qui faire cela déjà "richtig". |
| | | | |
| | Nico Madysa | je vois déjà, daran scheiter sogar qui berühmte Druck-S-Abf-bouton ... Doch sage la fois, es spricht doch rien vers une Spieleanwendung, quelle zwar pas dans den Hintergrund rückt (HWND_TOPMOST), sich mais minimieren peut, gelle? |
| | | | |
| | | Komisch ausgedrückt la hâte Du cela garnicht "nötig". prends simple Bitmaps bzw. Picture-Statics et sende cette neue hPic-Handles si vous autre chose montrer devoir. cela Neuzeichnen ist en Problem. ou bien Du zeichnest juste qui ganze surface dans einem hPic et malst cela hPic aufs hWnd.
je serait gern qui devoir comprendre, quoi oui c'est ca solls car volonté? |
| | | | |
| | Nico Madysa | comment du sicherlich déjà deviner la hâte, un Spiel. cela Problem ist, dass je aus Trouvé des Designs kurzzeitig sur den deaktivierten Knöpfen selbst herummalen muss. Bisher était cela Problem, dass qui partie des Bildes ensuite beim prochain Neuzeichnen naturellement weg ist, c'est pourquoi qui concept, Knopf avec Bild sur einem Hintergrundstatic trop fixieren. Doch là pouvoir oui plan eh bien &SCRBMP Ärger. |
| | | | |
| | | >> comment du sicherlich déjà deviner la hâte, un Spiel.
Au oui, suis dabei!
et alles seulement avec cela irgendwas anklickbar ist?
Welchem Spiel kommts am nähesten? |
| | | | |
| | Nico Madysa | cet Mischung aus Minesweeper et Schiffe Versenken, chez qui du mir bereits avec qui Updatefunktion geholfen la hâte. : [...] je habs bisher seulement encore pas angekündigt, weil es dans den Wettbewerb soll, sobald qui schlimmsten Kinderkrankheiten auskuriert sommes. dans qui bisher hochgeladenen Version gibt es aussi encore pas cela Hintergrundstatic, wodurch cela Gezeichnete verschwindet, sobald quoi par-dessus gleitet. |
| | | | |
| | | Verstehe, ensuite serait je absolument empfehlen simple sur dem hWnd trop rester um là z.B. un hPic trop zeichnen welches cela komplette Spiel contient.
dans einem 2. hPic zeichnest Du seulement qui klickbaren Bereiche, chacun Bereich simple une autre la couleur. avec einem GetPixel sur cet hPic bekommt on fix raus, sur welchen Bereich (objet) geklickt wurde et sogar avec Karenz si erwünscht.
Nachtrag: Tolles Spiel! |
| | | | |
| | Nico Madysa | [...] je ne sais pas, si je richtig verstehe, quoi du meinst. cela Spiel besteht oui gewissermaßen aus deux Hälften. dans qui ersten sommes seulement Buttons sur dem Spielfeld et on écoutes arrêt. seulement dans qui zweiten Moitié, dans qui Solution, venons ensuite presque alle Buttons weg et cela Bild wird gezeichnet. qui Randbuttons sommes eigentlich seulement dageblieben, weil sonst qui abgefeuerten Laserstrahlen aus dem rien auftauchten. Es sieht so simple toller aus. |
| | | | |
|
répondreOptions du sujet | 2.311 Views |
Themeninformationencet Thema hat 3 participant: |