ein paar kleine Fragen... :D
Übersicht

ClayCBetreff: ein paar kleine Fragen... :D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Hab ein 2 Problemchen mit meinem Code, hab mir die Hilfe schon durchgelesen komm aber ned drauf. 1. Wenn ich von dem Menüpunkt "Spiel" zu "?" gehe dann überlappen sich die Fenster bzw das alte wird nicht gelöscht. 2.Wenn ich auf "Spiel" -> "beenden" gehe dann kann ich zwischen "ok" und "abbrechen" auswählen aber es is egal was ich drücke es beendet sowieso ![]() Eine Frage noch zu Backbuffer: Wie kann ich das Bild vom Backbuffer in den Frontbuffer schreiben? Also den Drawimage Befehl ohne Flip... Code: [AUSKLAPPEN] Import MaxGui.Drivers
Strict 'Zählvariablen/Schachbrett Global Y1:Int, X1:Int, Y2:Int, X2:Int Global Schachbrett:TImage=LoadImage("Schachbrett.png") Global GAME_WIDTH=900 Global GAME_HEIGHT=700 Local wx=(ClientWidth(Desktop())-GAME_WIDTH)/2 Local wy=(ClientHeight(Desktop())-GAME_HEIGHT)/2 Local window:TGadget=CreateWindow("Say Chess",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS) Local canvas:TGadget=CreateCanvas(0,0,900,700,window) 'Menü Anfang Local FileMenu:TGadget=CreateMenu("Spiel",0,WindowMenu(window)) CreateMenu "Neues Spiel",101,FileMenu,KEY_F2,MODIFIER_COMMAND CreateMenu"",0,filemenu CreateMenu "Beenden",102,FileMenu,KEY_F4,MODIFIER_COMMAND Local HelpMenu:TGadget=CreateMenu("?",0,WindowMenu(window)) CreateMenu "Über...",201,HelpMenu,KEY_F1,MODIFIER_COMMAND 'Menü Ende Repeat UpdateWindowMenu window WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE FreeGadget canvas End Case EVENT_MENUACTION Select EventData() Case 101 Confirm "Neues Spiel starten?" Case 102 Confirm "Say Chess Beenden?" End Case 201 Notify "Say Chess ~nEntwickelt 2008-2009" End Select Case EVENT_GADGETPAINT SetGraphics CanvasGraphics(canvas) SetOrigin 60,60 SetLineWidth 1 Local X1:Int Local Y1:Int For X1 = 60 To 540 Step 60 DrawLine X1,60,X1,540 Next For Y1 = 60 To 540 Step 60 DrawLine 60,Y1,540,Y1 Next 'DrawImage Schachbrett,40,40 Flip End Select Forever |
||
danielos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moin!
Also zu deinen Problemen: 1) Das Menüfenster schließt sich schon, du musst nur den schwarzen Hintergrund bei EVENT_GADGETPAINT neuzeichnen, weil sonst eine abbild deines menüs auf dem zurückbleibt. (Das musst du aber selber coden, da wollte ich mich durch deinen Code nicht durchwühlen ![]() 2.) Confirm hat einen Rückgabewert, nämlich "1" falls OK gedrückt wurde, und 0 falls Abbrechen gedrückt wurde: Code: [AUSKLAPPEN] Import MaxGui.Drivers Strict 'Zählvariablen/Schachbrett Global Y1:Int, X1:Int, Y2:Int, X2:Int Global Schachbrett:TImage=LoadImage("Schachbrett.png") Global GAME_WIDTH=900 Global GAME_HEIGHT=700 Local wx=(ClientWidth(Desktop())-GAME_WIDTH)/2 Local wy=(ClientHeight(Desktop())-GAME_HEIGHT)/2 Local window:TGadget=CreateWindow("Say Chess",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS) Local canvas:TGadget=CreateCanvas(0,0,900,700,window) 'Menü Anfang Local FileMenu:TGadget=CreateMenu("Spiel",0,WindowMenu(window)) CreateMenu "Neues Spiel",101,FileMenu,KEY_F2,MODIFIER_COMMAND CreateMenu"",0,filemenu CreateMenu "Beenden",102,FileMenu,KEY_F4,MODIFIER_COMMAND Local HelpMenu:TGadget=CreateMenu("?",0,WindowMenu(window)) CreateMenu "Über...",201,HelpMenu,KEY_F1,MODIFIER_COMMAND 'Menü Ende UpdateWindowMenu window 'Vor der Hauptschleife Repeat Print CurrentEvent.tostring() WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE FreeGadget canvas End Case EVENT_MENUACTION Select EventData() Case 101 Confirm "Neues Spiel starten?" Case 102 Local ConfirmEnd=Confirm( "Say Chess Beenden?") Select ConfirmEnd Case 1 'OK wurde gedrückt End End Select Case 201 Notify "Say Chess ~nEntwickelt 2008-2009" End Select Case EVENT_GADGETPAINT SetGraphics CanvasGraphics(canvas) SetOrigin 60,60 SetLineWidth 1 Local X1:Int Local Y1:Int For X1 = 60 To 540 Step 60 DrawLine X1,60,X1,540 Next For Y1 = 60 To 540 Step 60 DrawLine 60,Y1,540,Y1 Next 'DrawImage Schachbrett,40,40 Flip End Select Forever Noch zwei Hinweise: 1.) Du musst nicht in jedem Schleifendurchlauf "UpdateWindowMenu window" benutzen, sondern nur, falls du z.B. einen Haken vor ein Menü setzt o.ä., sprich wenn sich etwas verändert an deinem menü nach dem ersten "UpdateWindowMenu" 2.) Es empfiehlt sich, Print CurrentEvent.tostring() zu benutzen, dass erleichtert das Programmieren ![]() Das sollte dir erstmal helfen... MfG Danielos |
||
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke danielos für die Hilfe und die tollen Tipps.
Das mit dem RedrawGadget hab ich noch nicht geschafft, aber das ist glaub ich kein größeres Problem. Eine Frage hab ich noch, wie ist das mit Blitzcode in C++ Code umwandeln hab schon ein bisschen gesucht aber nicht wirklich was gefunden. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BMax zu C++? Warum das denn? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Weil das Blitzmax Programm nur ein Teil eines größeren Projekts ist... | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann solltest Du dich für dein Projekt für eine Sprache entscheiden. Es ist kein Problem externe C/++-Sources in Bmax zu integrieren, BMax zu C++ hingegen stellt schon ein wenig mehr Aufwand dar.
Ab davon solltest Du vielleicht erst mal die Grundlagen des Programmierens meistern bevor Du versuchst komplexe Interaktion zu integrieren. Ein Schach halte ich btw für ein Anfängerprojekt für absolut ungeeignet. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
ClayC |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich programmiere schon seit ein paar Jahren(C++, Java(nur mal reingschnuppert^^), Perl, Php, Html,...) nur Blitzmax is halt neu für mich, hab vor ca einer Woche damit angefangen.
Ich finde nicht dass Schach so schwer ist ich brauch für meinen Fall keine KI, fallst du das gemeint hast... Aber es ist möglich dass man Blitz Code in C++ umwandeln kann? |
||
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Möglich ja, aber ob der Aufwand nicht zu groß ist? Ich wurde dir dies nicht empfehlen. es gibt aber eine Programmierspreche, welche das kann GlBasic. | ||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group