editor (zeichen prog) problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

SYSThern

Betreff: editor (zeichen prog) problem

BeitragMo, Dez 15, 2008 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo
für mein game hab ich einen editor erstellt es ist eher ein zeichenprog...egal
naja also
wenn man nun da zeichnet und die maus schnell bewegt... entstehen lücke??
wie behebe ich das?
und das speichern funktioniert nicht mehr =((obwohl es funktionierte!)
vll. hilft jemand
sry wegen unsauberen code nicht optimiert... heute 2 stunden

Code: [AUSKLAPPEN]

AppTitle "SYST_Draw v 0.2 a"
Graphics 640,480,16,2

Global save$
Global back

SetBuffer BackBuffer()
timer=CreateTimer(100)

window=CreateImage(128,72)
SetBuffer ImageBuffer(window)
Color 128,128,128
Rect 0,0,ImageWidth(window),ImageHeight(window)
Color 142,142,142
Rect 0,ImageHeight(window)-ImageHeight(window)/10,ImageWidth(window),ImageHeight(window)/10,1
Rect 0,0,ImageWidth(window),ImageHeight(window)/10,1
Color 5,5,5
Rect 0,0,ImageWidth(window),ImageHeight(window),0
Text 48,16,"save:"
Color 255,255,255
Rect 12,32,104,12,1
MidHandle window

Global paper=CreateImage(GraphicsWidth(),GraphicsHeight())
SetBuffer ImageBuffer (paper)
Color 255,255,255
Rect 0,0,ImageWidth(paper),ImageHeight(paper),1
SetBuffer BackBuffer()

bar=CreateImage(ImageWidth(paper),GraphicsHeight()/5)
SetBuffer ImageBuffer(bar)
Color 128,128,128
Rect 0,0,ImageWidth(bar),ImageHeight(bar),1
Color 142,142,142
Rect 0,ImageHeight(bar)-ImageHeight(bar)/10,ImageWidth(bar),ImageHeight(bar)/10,1
Rect 0,0,ImageWidth(bar),ImageHeight(bar)/10,1


Color 5,5,5
Rect 0,0,ImageWidth(bar),ImageHeight(bar),0
Rect 248,24,228,48,0
Rect 477,24,98,48,0
;SetBuffer BackBuffer()

new_button=CreateImage(64,32)
SetBuffer ImageBuffer(new_button)

Color 142,142,142
Rect 0,0,ImageWidth(new_button),ImageHeight(new_button)/2,1
Color 5,5,5
Rect 0,0,ImageWidth(new_button),ImageHeight(new_button),0
Text 20,8,"New"
;SetBuffer BackBuffer()

save_button=CreateImage(64,32)
SetBuffer ImageBuffer(save_button)
Color 142,142,142
Rect 0,0,ImageWidth(save_button),ImageHeight(save_button)/2,1
Color 5,5,5
Rect 0,0,ImageWidth(save_button),ImageHeight(save_button),0
Text 18,8,"Save"
;SetBuffer BackBuffer()

SetBuffer BackBuffer()
red=CreateImage(32,32)
SetBuffer ImageBuffer(red)
Color 255,0,0
Rect 0,0,ImageWidth(red),ImageHeight(red),1
;SetBuffer BackBuffer()

green=CreateImage(32,32)
SetBuffer ImageBuffer(green)
Color 0,255,0
Rect 0,0,ImageWidth(green),ImageHeight(green),1
;SetBuffer BackBuffer()

blue=CreateImage(32,32)
SetBuffer ImageBuffer(blue)
Color 0,0,255
Rect 0,0,ImageWidth(blue),ImageHeight(blue),1
;SetBuffer BackBuffer()

yellow=CreateImage(32,32)
SetBuffer ImageBuffer(yellow)
Color 255,255,0
Rect 0,0,ImageWidth(yellow),ImageHeight(yellow),1
;SetBuffer BackBuffer()

black=CreateImage(32,32)
SetBuffer ImageBuffer(black)
Color 5,5,5
Rect 0,0,ImageWidth(black),ImageHeight(black),1
;SetBuffer BackBuffer()
MaskImage black,1,1,1

white=CreateImage(32,32)
SetBuffer ImageBuffer(white)
Color 255,255,255
Rect 0,0,ImageWidth(white),ImageHeight(white),1
;SetBuffer BackBuffer()

pointer=CreateImage(8,8)
SetBuffer ImageBuffer(pointer)
Color 1,1,1
Oval 2,2,4,4,1
;SetBuffer BackBuffer()

pointer2=CreateImage(8,8)

HidePointer()

brush_rect=CreateImage(16,16)
SetBuffer ImageBuffer(brush_rect)
Color 1,1,1
Rect 0,0,16,16,1
;SetBuffer BackBuffer()

brush_oval=CreateImage(16,16)
SetBuffer ImageBuffer(brush_oval)
Color 1,1,1
Oval 0,0,16,16,1
SetBuffer BackBuffer()

size=12
modus=1
While Not KeyHit(1)

   
mh=MouseHit(1)
If ImagesOverlap(pointer,MouseX(),MouseY(),red,256,32) And mh=1 Then Color 255,0,0
If ImagesOverlap(pointer,MouseX(),MouseY(),yellow,292,32) And mh=1 Then Color 255,255,0
If ImagesOverlap(pointer,MouseX(),MouseY(),green,328,32) And mh=1 Then Color 0,255,0
If ImagesOverlap(pointer,MouseX(),MouseY(),blue,364,32) And mh=1 Then Color 0,0,255
If ImagesOverlap(pointer,MouseX(),MouseY(),black,400,32) And mh=1 Then Color 0,0,0
If ImagesOverlap(pointer,MouseX(),MouseY(),white,436,32) And mh=1 Then Color 255,255,255
If ImagesOverlap(pointer,MouseX(),MouseY(),brush_rect,500,40)And mh=1 Then modus=1
If ImagesOverlap(pointer,MouseX(),MouseY(),brush_oval,536,40)And mh=1 Then modus=2
If ImagesOverlap(pointer,MouseX(),MouseY(),new_button,128,56) And mh=1 Then
SetBuffer ImageBuffer(paper)
Color 255,255,255
Rect 0,0,ImageWidth(paper),ImageHeight(paper),1
SetBuffer BackBuffer()
EndIf
If ImagesOverlap(pointer,MouseX(),MouseY(),save_button,128,10) And mh=1 Then
   saveing=1
   
EndIf
SetBuffer ImageBuffer(pointer2)
Oval 0,0,8,8,0
SetBuffer BackBuffer()

DrawImage paper,0,0
DrawImage bar,0,0
DrawImage red,256,32
DrawImage yellow,292,32
DrawImage green,328,32
DrawImage blue,364,32
DrawImage black,400,32
DrawImage white,436,32
DrawImage brush_rect,500,40
DrawImage brush_oval,536,40
DrawImage new_button,128,54
DrawImage save_button,128,10
If saveing=1
   newinput$()
DrawImage window,GraphicsWidth()/2,GraphicsHeight()/2
Text 267,235,save$
EndIf
If KeyDown(28) Then
   ok=SaveImage(paper,save$+".bmp")
   saveing=0   
EndIf

Text 0,24,ok
Text 0,0,MouseX()
Text 0,12,MouseY()

DrawImage pointer,MouseX(),MouseY()
DrawImage pointer2,MouseX(),MouseY()

If MouseDown(1) Then
SetBuffer ImageBuffer(paper)
For i=1 To 500
   If modus=2 Then
Oval MouseX(),MouseY(),size,size,1
Else If modus=1 Then
Rect MouseX(),MouseY(),size,size,1
EndIf
Next
EndIf
SetBuffer BackBuffer()

WaitTimer timer

Flip 0
   Cls
   
Wend
End



Function newinput$()
   Local i= GetKey()
   
   If i>=1 Then  save$ = save$ + Chr$(i)
   If KeyDown(14) And Len(save$) > 0 And MilliSecs()-back >70 Then
      back=MilliSecs()
      save$ = Left(save$,(Len(save$)-1))
   End If
   Return save$
End Function


danke im vorraus....
frei verwendbar...
mfG SYSThern
Tools and Programms
--------------------
www.systhern.de

coolo

BeitragMo, Dez 15, 2008 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Du speicherst die vorige Position, dann die neuen, und dann machst du ne Linie.
Bei nem Oval oder dergleichen, berechnet man sich den Winkel wwischen den beiden Punkten, und dann nähert man sich Schritteweise der Maus.

Ich weiß nicht ob das der effektivste Weg ist das zu machen, aber er funktioniert.

Warum das Speichern nicht funzte, können wir nicht dagen, weil wir keine Hellseher sind. Also zeig unde den Speichercode.
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

SYSThern

BeitragMo, Dez 15, 2008 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
aha gut dange mal schaun

speichercode???

ist alles drin

edit!!!
geschafft aber trotzdem danke
Tools and Programms
--------------------
www.systhern.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group