Probleme beim Editor coden -_-

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

.:_]TRaSh

Betreff: Probleme beim Editor coden -_-

BeitragDi, Feb 24, 2004 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.
Ich wollt grad einen Editor coden, wobei die Levels, die mit diesem Editor erstellt werden, nur aus simplen Linien (also nur mit dem Befehl Line) bestehen, bis ich feststellte, das dieses weit über mein schmales Denkvermögen hinausgeht.

Ich will also einfach nur einen Editor, der simples Platzieren von mehreren (!) Linien ermöglicht.

Für jede Lösung ohne Types werde ich euch an der Körperstelle eures Wunsches lecken Wink.

BITTE HELFT MIR.
[20:17] IMurDOOM: hm irgendwie is die mitte des viehs kaputt
[20:17] TRaSh: ein bisschen
[20:18] DarkAngel: es tut mir irgend wie leid

TheShadow

Moderator

BeitragDi, Feb 24, 2004 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
dann benutz DIM oder Bank...

wozu soll so ein Editor gut sein?

Line hat Nachteile:

1) du kannst nicht zu lange Linien zeichnen - glaube bis 65535, dann gibt es "overflow"

2) Linie ist Langsam
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

.:_]TRaSh

BeitragDi, Feb 24, 2004 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Editor braucht kein flowing oder so, es ist ein Standlevel ohne scrolling.

Ist Line langsamer als ein 800x600-bmp, das ständig auf pixelgenaue Kollision abgefragt wird? Rolling Eyes

Ich habs schon mit Dim versucht, mit 2-Dimensionalen Feldern, aber irgendwie bekomm ich's nicht gebacken, obwohl ich schon "richtige" Tile-Editoren geschrieben hab..
[20:17] IMurDOOM: hm irgendwie is die mitte des viehs kaputt
[20:17] TRaSh: ein bisschen
[20:18] DarkAngel: es tut mir irgend wie leid

BladeRunner

Moderator

BeitragDi, Feb 24, 2004 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
PSEUDO:
Code: [AUSKLAPPEN]

dim Karte(linienzahl,3)

karte (linie,0)=startx
karte (linie,1)=starty
karte (linie,2)=zielx
karte (linie,3)=ziely


for linie = 0 to linienzahl
line karte (linie,0),karte (linie,1),karte (linie,2),karte (linie,3)
next

oder meintest du was anderes ?
Einfach die Mausposition zu Start und ende ins passende Feld übergeben, fertig.
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
 

.:_]TRaSh

BeitragMi, Feb 25, 2004 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
...so mein ich das schon, aber woher weiß ich/das Programm welcher Startpunkt zu welchem Endpunkt gehört?
[20:17] IMurDOOM: hm irgendwie is die mitte des viehs kaputt
[20:17] TRaSh: ein bisschen
[20:18] DarkAngel: es tut mir irgend wie leid

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMi, Feb 25, 2004 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal schnell was mit Arrays gecodet. So in etwa?


Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

Global mx,my      ;Mouse
Global slsx,slsy   ;Set Line Start
Global linemode      ;Startpunkt (0) oder Endpunkt (1)
Global current      ;Current Line

Const maxcount=100   ;Maximale Linien Anzahl
Dim lsx(maxcount)   ;Line Start X
Dim lsy(maxcount)   ;Line Start Y
Dim lex(maxcount)   ;Line End X
Dim ley(maxcount)   ;Line End Y

;Lines "löschen" (-1 = gelöscht)
For i=0 To maxcount
   lsx(i)=-1
   lex(i)=-1
Next

;Hauptschleife
While Not KeyHit(1)
   Cls
   
   ;Mouse Cachen
   mx=MouseX()
   my=MouseY()
   
   ;Setzen
   If MouseHit(1) Then
      If Not linemode
         If current>maxcount Then RuntimeError("Linien Limit erreicht")
         linemode=1
         lsx(current)=mx
         lsy(current)=my
      Else
         lex(current)=mx
         ley(current)=my
         linemode=0
         current=current+1
      EndIf
   EndIf      

   ;Zeichen
   For i=0 To maxcount
      If lsx(i)>-1 Then
         ;Fertige Linie?
         If lex(i)>-1 Then
            Line lsx(i),lsy(i),lex(i),ley(i)
         ;Aktuelle Linie die gesetzt werden soll
         Else
            Line lsx(i),lsy(i),mx,my
         EndIf
      EndIf
   Next

   Flip
Wend


Man sollte aber die fertigen Linien in einen Imagebuffer zeichnen. Viel schneller einfach ein Bild zu zeichnen als X Linien
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com
 

.:_]TRaSh

BeitragMi, Feb 25, 2004 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho DC, danke, genau das suchte ich!! Very Happy

Wenn ich irgendwas nicht rall' meld ich mich.


[edit]
::meld::

Kannst du mir mal bitte die Schleife "If MouseHit(1)" erklären?
[20:17] IMurDOOM: hm irgendwie is die mitte des viehs kaputt
[20:17] TRaSh: ein bisschen
[20:18] DarkAngel: es tut mir irgend wie leid

BladeRunner

Moderator

BeitragMi, Feb 25, 2004 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If MouseHit(1) Then ;wenn linke Maustaste Gedrückt dann:
      If Not linemode ;falls noch nicht mit einer Linie Begonnen
         If current>maxcount Then RuntimeError("Linien Limit erreicht"); ...und noch linien frei sind ...
         linemode=1 ;dann beginnen wir eine Linie
         lsx(current)=mx ;und übergeben x und y werte der Maus ans Array
         lsy(current)=my
      Else ;andernfalls (also es ist schon eine Linie Begonnen)
         lex(current)=mx ;übergeben wir x u. y der Maus als Endpunkte der Linie
         ley(current)=my
         linemode=0 ; sagen dass die Linie Fertig ist
         current=current+1 ; und erhöhen die Anzahl der Gesetzten Linien um 1
      EndIf
   EndIf
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group