Anzeigefehler

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

moehrchen

Betreff: Anzeigefehler

BeitragFr, Nov 23, 2007 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Tag!

Bevor ihr mich jetzt verwechselt... lasst mich was erklären! Der untenstehende Code und auch einige Ideen werden euch wohl sehr bekannt von meinem Freund vorkommen, der hier gestern udn vorgestern an der Erstellung einer vermeindlich einfachen Aufgabe gescheitert ist. Wir sollten das eigentlich aufteilen (mehrere Projekte bekommen die wir zum Tag der offenen Tür, der in 10 Stunden stattfindet erledigen sollten.) Soweit so gut ich habe meine Aufgaben erledigt. Leider hielt es John allerdings nicht für nötig mir vorher zu erzählen das er es net schafft, bis gestern abend hat er noch behauptet er würde es schaffen. Dann hat er mir heute den Code per ICQ geschickt und gesagt er schafft es nicht ich soll es machen... Tel dauernd besetzt... toller Freund! Aber naja darum gehts hier nicht. Ich muss es jetzt quasi ausbaden und ich muss gestehen ich hab noch nicht wirklich mit Blitz Basic gearbeitet. Geschweige den mit DirectX7 oder ähnlichem.

Wenn der Code jetzt nicht sauber aussieht bitte ich das zu verzeihen, aber hauptsache für mich ist erstmal das das Dingen funktioniert. Dannach kann man schauen wie man den Code formatiert.

Die Grundidee und Grundquelltext habe ich von ihm übernommen. Sie ist das man quasi "Slots" hat in dennen man die einzelnen Steine nach Links und rechts verschieben kann, bisher eigentlich per Tastatureingabe um das ganze zu Testen, ich bin zwar momentan dabei dazu ne MouseFunction zu schreiben aber die ist noch nicht komplett im Code hier.

Ich Poste erstmal den Code:::

Code: [AUSKLAPPEN]
Graphics 1024, 768, 16, 2
SetBuffer BackBuffer()

Global timer = CreateTimer (30)

Dim tower(3,9)

Global MCount = 0 ;MistakeCount
Global SCount = 0 ;StepCount

Global obersteRender = 1 ;just one time "substrahieren"

Dim failed(10)

failed(1) = 0
failed(2) = 0
failed(3) = 0
failed(4) = 0
failed(5) = 0
failed(6) = 0
failed(7) = 0
failed(8) = 0
failed(9) = 0

Dim anzahl(3)
anzahl(1) = 0
anzahl(2) = 0
anzahl(3) = 0

Dim oberste(4)
oberste(1) = 9
oberste(2) = 9
oberste(3) = 9

Global b1 = LoadImage("1.bmp")
Global b2 = LoadImage("2.bmp")
Global b3 = LoadImage("3.bmp")
Global b4 = LoadImage("4.bmp")
Global b5 = LoadImage("5.bmp")
Global b6 = LoadImage("6.bmp")
Global b7 = LoadImage("7.bmp")

Global m1 = LoadImage("button_neu.bmp")
Global m2 = LoadImage("button_regeln.bmp")
Global m3 = LoadImage("button_loesung.bmp")
Global m4 = LoadImage("button_ende.bmp")

MaskImage b1, 255, 255, 255
MaskImage b2, 255, 255, 255
MaskImage b3, 255, 255, 255
MaskImage b4, 255, 255, 255
MaskImage b5, 255, 255, 255
MaskImage b6, 255, 255, 255
MaskImage b7, 255, 255, 255

MaskImage m1, 255, 255, 255
MaskImage m2, 255, 255, 255
MaskImage m3, 255, 255, 255
MaskImage m4, 255, 255, 255


wievielScheiben$ = Input ("Wieviele Scheiben möchten Sie haben?");
If(wievielScheiben$>7)
Print "Zuviel Scheiben. Bitte einen Wert von 1 bis 7 engeben."
wievielScheiben$ = Input ("Wieviele Scheiben möchten Sie haben?");
If(wievielScheiben$>7)
Print "Zuviel Scheiben. Bitte einen Wert von 1 bis 7 engeben."
wievielScheiben$ = Input ("Wieviele Scheiben möchten Sie haben?");
If(wievielScheiben$>7)
Print "Dann nicht! Bitte nicht den Nummernblock verwenden."

EndIf
EndIf
EndIf
If(wievielscheiben<1)
Print "Zuwenig Scheiben. Bitte einen Wert von 1 bis 7 eingeben."
wievielScheiben$ = Input ("Wieviele Scheiben möchten Sie haben?");´
If(wievielscheiben<1)
Print "Zuwenig Scheiben. Bitte einen Wert von 1 bis 7 eingeben."
wievielScheiben$ = Input ("Wieviele Scheiben möchten Sie haben?");
If(wievielscheiben<1)
Print "Dann nicht! Bitte nicht den Nummerblock verwenden."
EndIf
EndIf
EndIf


Function clickHandler()
Locate 800,600
   x_Koordinaten = MouseX()
   y_Koordinaten = MouseY()
   Print "FUCK!"
   Write x_Koordinaten
   Write y_Koordinaten
   Print "NEW"
   Locate 200,200


End Function ;clickHandler()



Function getoberstestone(towerid)
         isfound = 0
         If(tower(towerid,7) = 1 And isfound = 0)
         oberste(towerid) = 7
         isfound = 1
         EndIf
         
         If(tower(towerid,6) = 1 And isfound = 0)
         oberste(towerid) = 6
         isfound = 1
         EndIf
         
         If(tower(towerid,5) = 1 And isfound = 0)
         oberste(towerid) = 5
         isfound = 1
         EndIf
         
         If(tower(towerid,4) = 1 And isfound = 0)
         oberste(towerid) = 4
         isfound = 1
         EndIf
         
         If(tower(towerid,3) = 1 And isfound = 0)
         oberste(towerid) = 3
         isfound = 1
         EndIf
         
         If(tower(towerid,2) = 1 And isfound = 0)
         oberste(towerid) = 2
         isfound = 1
         EndIf
         
         If(tower(towerid,1) = 1 And isfound = 0)
         oberste(towerid) = 1
         isfound = 1
         EndIf
         
End Function;getoberstestone


createGame(wievielScheiben$)

anzahl(1) = wievielScheiben$

Function moveStone(fromtowerid, towerid)
Print "Fromtowerid:"
Print fromtowerid
Print "TowerId:"
Print towerid

getoberstestone(fromtowerid)
stoneid = oberste(fromtowerid)
Print "Stoneid(func)"
Print stoneid

   Select stoneid
      Case 1:
         Print "Ich bin in StoneId                      Case1"
         Print "<x>"
         Print                                tower(towerid,2)
         Print "</x>"
         If(tower(towerid,2) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(1) = 1
         EndIf
         If(tower(towerid,3) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(1) = 1
         EndIf
         If(tower(towerid,4) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(1) = 1
         EndIf
         If(tower(towerid,5) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(1) = 1
         EndIf
         If(tower(towerid,6) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(1) = 1
         EndIf
         If(tower(towerid,7) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(1) = 1
         EndIf
         
         If(failed(1) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(1) = 0
         Else
            ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf
      Case 2:
         Print "Ich bin in StoneId                      Case2"
         Print "<x>"
         Print                                tower(towerid,3)
         Print "</x>"
         If(tower(towerid,3) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(2) = 1
         EndIf
         If(tower(towerid,4) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(2) = 1
         EndIf
         If(tower(towerid,5) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(2) = 1
         EndIf
         If(tower(towerid,6) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(2) = 1
         EndIf
         If(tower(towerid,7) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(2) = 1
         EndIf
         
         If(failed(2) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(2) = 0
         Else
            ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf
         
      Case 3:
         Print "Ich bin in StoneId                      Case3"
         Print "<x>"
         Print                                tower(towerid,3)
         Print "</x>"
         If(tower(towerid,4) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(3) = 1
         EndIf
         If(tower(towerid,5) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(3) = 1
         EndIf
         If(tower(towerid,6) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(3) = 1
         EndIf
         If(tower(towerid,7) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(3) = 1
         EndIf
         
         If(failed(3) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(3) = 0
         Else
               ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf

         
         
      Case 4:
         Print "Ich bin in StoneId                      Case4"
         Print "<x>"
         Print                                tower(towerid,3)
         Print "</x>"
         If(tower(towerid,5) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(4) = 1
         EndIf
         If(tower(towerid,6) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(4) = 1
         EndIf
         If(tower(towerid,7) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(4) = 1
         EndIf
         
         If(failed(4) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(4) = 0
         Else
            ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf
         
      Case 5:
         Print "Ich bin in StoneId                      Case5"
         Print "<x>"
         Print                                tower(towerid,3)
         Print "</x>"
         If(tower(towerid,6) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(5) = 1
         EndIf
         If(tower(towerid,7) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(5) = 1
         EndIf
         
         If(failed(5) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(5) = 0
         Else
            ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf   
         
      Case 6:
         Print "Ich bin in StoneId                      Case6"
         Print "<x>"
         Print                                tower(towerid,3)
         Print "</x>"
         If(tower(towerid,7) = 1)
         Print "<xxxxxxxxxxxxxxxxxxxxxxxxx>"
         failed(6) = 1
         EndIf
         
         If(failed(6) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(6) = 0
         Else
            ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf   
         
      Case 7:
         Print "Ich bin in StoneId                      Case7"
         Print "<x>"
         Print                                tower(towerid,3)
         Print "</x>"
         
         If(failed(7) = 1)
            Print "Es dürfen niemals größere auf kleinere Scheiben gelegt werden."
            MCount = Mcount + 1 ;count Mistakes
            failed(7) = 0
         Else
            ;Move
            tower(fromtowerid,stoneid) = 0;delete
            anzahl(fromtowerid) = anzahl(fromtowerid) - 1;countdown
            tower(towerid, stoneid) = 1;create
            anzahl(towerid) = anzahl(towerid) + 1
            Scount = Scount + 1 ; count Steps
         EndIf      
         
         
         
         End Select
         
         If(fromtowerid = towerid)
         
         Scount = Scount - 1
         anzahl(fromtowerid) = anzahl(fromtowerid) + 1;countdown
         anzahl(towerid) = anzahl(towerid) - 1
         EndIf
End Function;moveStone

Function createGame(scheibenanzahl)
anzahl(1) = scheibenanzahl
Write scheibenanzahl

For n=1 To scheibenanzahl Step 1
Tower(1,n) = 1
Tower(2,n) = 0
Tower(3,n) = 0
Next;
moveStone(1,3)
moveStone(1,3)


While Not KeyHit(1)
   If(obersteRender = 1)
   Scount = Scount - 1
   obersteRender = 0
   EndIf

   ;Cls
   Text 950, 730, MCount
   Text 850, 730, SCount
   welcherstein = Input("Von welchem Turm soll der oberste Stein bewegt werden?")
   If(welcherstein>3)
   welcherstein = Input("Zahl zu hoch! Von welchem Turm soll der oberste Stein bewegt werden?")
   EndIf

;Write welcherstein


   welcherturm = Input("Gut. Und Wohin ?")
   If(welcherturm>3)
   welcherturm = Input("Zahl zu hoch! Gut. Und Wohin?")
   EndIf
   ;Write welcherturm
   
   If(woiststein = welcherturm)
   ; nixs
   Else
   
   
   
   ClsColor 255,255,255
   Color 0,0,0
      If(MouseDown(1))
   clickHandler
   EndIf
   Cls
   moveStone(welcherstein,welcherturm) ;Bewegen.
   EndIf;
   For m = 0 To 3 Step 1
   Print "<<<<<>>>>>"
   Print m
   Print anzahl(m)
   Print "!!!"

      For o = 0 To anzahl(m) Step 1
         If(tower(m,o) = 1)
            Select o
               Case 1
                  DrawImage b7, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Case 2
                  DrawImage b6, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Case 3
                  DrawImage b5, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Case 4
                  DrawImage b4, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Case 5
                  DrawImage b3, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Case 6
                  DrawImage b2, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Case 7
                  DrawImage b1, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
               Default
                  DrawImage b1, ((m-1)*250 + m*70), (683-((o-1)*70)) ;Draw
            End Select   
         Text 50,50, scheibenanzahl
         EndIf
      
      Next;
   
   Next;
   
   DrawImage m1, 0, 0;Draw
   DrawImage m2, 256, 0;Draw
   DrawImage m3, 512, 0;Draw
   DrawImage m4, 768, 0;Draw

      
   
   
   
   
   WaitTimer timer
   
   Flip; Flipping(x²-3x³+9x)
Wend;


End Function;createGame


Das ist der Code so wie ich ihn jetzt momentan übernommen / angepasst habe. Mein Problem ist nun das er zwar korrekt startet und alles, und nach dem ersten Move auch alles korrekt darstellt, er allerdings wenn man z.b. 1 und 2 eingibt im zweitem turm die grafiken nichtmehr anzeigt.

Könnt ihr mir da vielleicht helfen?

Ich komme nichtmehr weiter. Auch wenngleich ich keine andere Wahl habe als weiterzuversuchen weiß ich nicht ob ich es rechtzeitig schaffe..

Ich kann euch aber schonmal verkünden das ich lediglich ein problem mit der anzeige habe. Im System stimmen die Einträge alle. Das einzige Problem wöre die Anzeige. Nur das krieg ich nicht alleine hin (zumindest nicht recchtzeitig bis morgen)


Und falls ihr euch denkt ich möchte nur meine Informatik-Hausaufgaben gemacht haben.. Nein! Wir haben hier Samstags keine Schule, und sonst würde kaum einer solange Aufbleiben bis er es shafft, was ich zu tun habe, den ansonsten reißt der Rektor unsrer Gruppe (welche nun ohne John ist.) den Kopf ab, er wird es nicht verstehen und so sachen wie "hättet euch halt absprechen sollen" sagen.. Da kann ich auch echt nicht darauf bauen das John sagt das es seine Schuld war. Wer es testen möchte kann sich gerne das Script hier laden und wer möchte darf es sogar frei verwenden, sozusagen Open Source. Ich versuche die Grafiken anzuhängen.


Bitte helft mir.

Mit freundlichen Grüßen,
Manuel

EDIT: Grafiken im Datei-Archiv gefunden: https://www.blitzforum.de/upload/file.php?id=2361

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Nov 23, 2007 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hä? Du willst das wir den schlecht geschriebenen Code für dich vervollständigen? Oder uns in der komischen Logik zurecht finden? Ohne zu übertreiben kann man die ganze Funktionalität auf etwa 1/3 Codemenge bringen, und das ganze dabei auch funktionsfähig und per Maus spielbar. Wenn du dich ein wenig mit programmieren auskennst, so mach alles neu...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

moehrchen

BeitragFr, Nov 23, 2007 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:
Hä? Du willst das wir den schlecht geschriebenen Code für dich vervollständigen? Oder uns in der komischen Logik zurecht finden? Ohne zu übertreiben kann man die ganze Funktionalität auf etwa 1/3 Codemenge bringen, und das ganze dabei auch funktionsfähig und per Maus spielbar. Wenn du dich ein wenig mit programmieren auskennst, so mach alles neu...



das ist mein problem. ich habe nicht die zeit um alles zu überdenken! ich möchte nicht das ihr meinen code vervollständigt, ich weiß nur nicht weiter bei der anzeige in konkret diesem Teil des Codes:


Code: [AUSKLAPPEN]
For m = 0 To 3 Step 1
   Print "<<<<<>>>>>"
   Print m
   Print anzahl(m)
   Print "!!!"

      For o = 0 To anzahl(m) Step 1
         If(tower(m,o) = 1)
            Select o
               Case 1
                  DrawImage b7, 337, (683-((o-1)*70)) ;Draw
               Case 2
                  DrawImage b6, 337, (683-((o-1)*70)) ;Draw
               Case 3
                  DrawImage b5, 337, (683-((o-1)*70)) ;Draw
               Case 4
                  DrawImage b4, 337, (683-((o-1)*70)) ;Draw
               Case 5
                  DrawImage b3, 337, (683-((o-1)*70)) ;Draw
               Case 6
                  DrawImage b2, 337, (683-((o-1)*70)) ;Draw
               Case 7
                  DrawImage b1, 337, (683-((o-1)*70)) ;Draw
               Default
                  DrawImage b1, 337, (683-((o-1)*70)) ;Draw
            End Select   
         Text 50,50, scheibenanzahl
         EndIf
      
      Next;
   
   Next;


Da ist halt ein fehler drinnen sodass er nur vom Turm 1 anzeigt (also Tower(1,[1-7]) ). Da komme ich halt nicht weiter.

Ich biete auch an mich dafür persönlich nächste Woche oder so an ein kleines Phpscript für euch zu setzen (oder ein freund macht die3s, könnt ihr aussuchen).

Mfg,
Manuel


EDIT:

Btw: wie würdest du es den machen?

Da ist hier ja schon vereinfacht damit man es gut coden kann. Wenn ich jetzt die Logik meines Freundes nochmal komplett übern Haufen werfe und neu Anfange bleiben mir nicht viele Stunden um das hinzukrigen, debuggen und so weiter :/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Nov 24, 2007 2:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mich mal hingesetzt und es mal versucht. Nicht weil ich dich gern hab, sondern weil mir grad Langweilig war. Mein Code wird mit der Maus bedient und ist ganze 2 kB groß vs. 11 kb und funktioniert dabei. Da ich aber überhaupt keine Lust auf diese ganzen 2D-Sachen habe, habe ich es mithilfe meiner Draw3D -Library gemacht. Du benötigst also Blitz3D oder musst dir den Code selber umschreiben. Das ganze kommt ohne geladene Bilder aus, was aber kein Problem sein sollte.

Lange Rede kurzer Sinn. Hier der Code:

Dependencies:
- Draw3D.bb weitere Infos und Download http://blitzbasic.pytalhost.de/viewtopic.php?t=88
- cosmic.png ist in der Library bereits enthalten, oder eine bessere Version hier downloaden

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

Local Camera=CreateCamera()
CameraClsColor Camera,80,80,96

Include "Draw3D.bb"
DrawInit3D(Camera)
Origin3D(800,600)
NativeInit3D(2,2)

Dim Steine(2,7)
Steine(0,0)=9
Steine(1,0)=9
Steine(2,0)=9
Steine(1,1)=7
Steine(1,2)=6
Steine(1,3)=5
Steine(1,4)=4
Steine(1,5)=3
Steine(1,6)=2
Steine(1,7)=1

Local Font=LoadFont3D("cosmic.png",2,2)
Local Timer=CreateTimer(100)
Local SX,SY ;Schleifenvariablen
Local Auswahl ;Auswahlposition
Local Merken=0
Local Status=0




;HAUPTSCHLEIFE
While Not KeyHit(1)
   Auswahl=(MouseX3D+300)/200
   If Auswahl>2 Then Auswahl=2
   If Auswahl<0 Then Auswahl=0
   
   ;Auswahl
   ColorN3D(0,0,0,.25)
   Rect3D(Auswahl*200-200,-40,100,142,1)
   
   ;Steine
   ColorN3D(255,0,0,1)
   For SX=-200 To 200 Step 200
      For SY=-160 To 80 Step 40
         Rect3D(SX,SY,Steine((SX+300)/200,(SY+220)/40)*12,18,1)
      Next
   Next
   
;   ;Gitter
;   ColorN3D(255,255,255,1)
;   Rect3D(0,-60,300,160,0,4)
;   For SX=-200 To 200 Step 200
;      For SY=-200 To 80 Step 40
;         Rect3D(SX,SY,100,20,0,4)
;      Next
;   Next
   
   ;Ziffern
   For SX=0 To 2
      For SY=1 To 7
         If Steine(SX,SY)>0 Then Text3D(Font,SX*200-200,SY*40-200,Steine(SX,SY),1)
      Next
   Next
   
   ;Logik
   If MouseHit(1)
      If Status=0
         If Freier(Auswahl,2)>0
            Merken=Auswahl
            Status=1
         End If
      Else
         If Freier(Auswahl,1)>Freier(Merken,1) Or Freier(Auswahl,1)=0
            Steine(Auswahl,Freier(Auswahl,2)+1)=Steine(Merken,Freier(Merken,2))
            Steine(Merken,Freier(Merken,2))=0
         End If
         Status=0
      End If
   End If
   
   ;Marker
   If Status=1
      ColorN3D(255,255,0,.25)
      Rect3D(Merken*200-200,Freier(Merken,2)*40-200,100,22,1)
   End If
   
   WaitTimer(Timer)
   RenderWorld
   Clear3D()
   Flip 0
Wend
End




Function Freier(FXPos,FMode)
   Local Merken=0
   Local Schleife
   For Schleife=0 To 7
      If Steine(FXPos,Schleife)>0
         If FMode=1 Then Merken=Steine(FXPos,Schleife)
         If FMode=2 Then Merken=Schleife
      End If
   Next
   
   Return Merken
End Function
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

moehrchen

BeitragSa, Nov 24, 2007 3:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hab tausend dank! das funktioniert prima. das was ich noch brauche kann ich mir ja selbstverständlich noch selber reincoden!!!! du weiß nicht wie sehr ich dir danken muss...

Du meldest dich auf jedenfall mal bei mir wenn du hilfe mit deiner Homepage brauchst, okay?! Da muss ich dir ja auch helfen...

Dein System schau ich mir auch aufjedenfall mal an.. sieht sehr gut aus, nur leider steig ich atm in 2d noch ganz durch da heute der erste tag war an dem ich überhaupt was programmiert habe (bzw. code geändert usw)... wenn da einigermaßen geht werden ich 2d professioneller machen und 3d als spielwiese schonmal antesten...


Meld dich bitte umbedingt wenn du mal hilfe brauchst,
MFG,
Manuel

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Nov 24, 2007 4:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab in nächster Zeit nicht vor meine Homepage weiter zu machen. Wenn überhaupt, dann muss ich zunächst mit CSS komplett klar kommen, der Rest wie PHP wird dann noch ein ganz großer Happen für mich, wo viel Zeit zum lernen noch ansteht. Danke aber trotzdem.

Weitere Tipps zu meinem Programm:

- Willst du die vorhandenen Bilder doch verwenden, dann packe alle Bilder (z.B. mit Paint) untereinader und speicher das dann als ein Bild ''250x490'' ab. Dann kannst du entweder mit der Kombination ql:LoadAnimImage und ql:DrawImage oder der Kombination ql:LoadImage und ql:DrawImageRect die ganz einfach per Wert ansprechen. Du sparst dir also die ganzen If-Abfragen, und kannst sogar eine leicht modifizierte Version meines Codes verwenden.

- Der Schlüssel zu allem im Code ist letztendlich die Funktion Freier(FXPos,FMode) welche bei FMode=1 angibt welcher Stein ganz oben auf dem Haufen liegt und bei FMode=2 angibt welcher Position der letzte Stein auf dem Haufen hat. Diese beide Informationen sind für alle weiteren ''Berechnungen'' ausschlaggebend. Wenn du also den Code verstehen willst/msst, so sei dir gesagt, dass eben diese Funktion eine wichtige Rolle dabei spielt. (Wirst du warscheinlich eh festgestellt haben). Spart zumindest jede Menge Codezeilen.

- Da in diesem Code zumindest der Startturm immer in der Mitte anfängt, so kann man einfach jeden Schleifendurchlauf oder immer dann, wenn man ein Stein bewegt hat, überprüfen ob eine ganze Reihe links (Pos=0) oder rechts (Pos=2) voll ist. Wenn ja, dann hat der Spieler es geschaft.

edit1: Wie heisst dieses Spiel überhaupt?

edit2: Hey shure_kyu da unten, danke für den Tipp. Will hier dafür nichts pushen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
  • Zuletzt bearbeitet von hectic am Sa, Nov 24, 2007 15:50, insgesamt einmal bearbeitet

shure_kyu

Newsposter

BeitragSa, Nov 24, 2007 4:12
Antworten mit Zitat
Benutzer-Profile anzeigen
die türme von hanoi

und das prinzip ist den turm von links nach ganz rechts zu bauen Wink

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group