Komisches Grabsprite ergebniss?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Komisches Grabsprite ergebniss?

Beitrag von benpicco »

Ich wollte mal eine Art Strategiespiel machen, und um die einheiten zu markieren, wollte ich abfragen, ob diese Mit einem gegrabbten Sprite kollidieren. Naja, von links oben nach rechts unten geht das perfekt, aber andererseits ist das erzeigte Sprite, naja, seltsam... Das sprite wird deshalb als test.bmp gespeichert und auf dem Biildschirm angezeigt, weil ich dachte, so könnte ich rausfinden, woran das problem liegt, aber was ich sehe ist - seltsam! seht selbt. Und noch etwas ist komischh: zieht man die Box größer, verschwindet diese irgendwann! Warum??? :?
Naja, code und erforderliche dateien gibt´s hier.
Danke schonmal für die Hilfe
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

ich kenne mich nicht auf der seite aus. poste hald den code einfach und das bild kannst du mit {img} anzeigen
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

ok

Code: Alles auswählen

InitSprite()
InitSprite3D()
InitSound()
InitKeyboard()
InitMouse()
ExamineScreenModes()
Global startX.w
Global startY.w
Global mark.b
Global dauer.b
Global markierX.w
Global markierY.w
Global pressed.b
Global trans.w
Global add.b
trans=255
add=(-1)
#max = 10
Dim infX.w(#max)
Dim infY.w(#max)
Dim beweg.b(#max)
Dim marked.b(#max)
Dim zielX.w(#max)
Dim zielY.w(#max)
For x=1 To #max
  infX(x)=10+x*10
  infY(x)=10
Next
OpenScreen(1024,768,32,"World Conquest")
Sprite3DQuality(1)
SetFrameRate(80)
LoadSprite(0,"grafic\cursor.bmp",#PB_Sprite_Texture)
CreateSprite3D(0,0)
LoadSprite(2,"grafic\infantrie.bmp")
TransparentSpriteColor(2,255,0,255)
LoadSound(1,"sound\pop.wav")
SoundFrequency(1,50000)
SoundVolume(1,50)
TransparentSpriteColor(0,255,255,255)
LoadSprite(1,"grafic\gras.bmp")
LoadSprite(3,"grafic\1x1.bmp")
TransparentSpriteColor(3,0,0,0)
ClearScreen(255,255,255)
MouseLocate(250,200)
Repeat
  If trans=100
    add=1
  ElseIf trans=255
    add=-1
  EndIf
 trans=trans+add
  ExamineMouse()
  DisplaySprite(1,0,0)
  DisplaySprite(1,450,0)
  DisplaySprite(1,0,400)
  DisplaySprite(1,450,400)
  For x=1 To #max
    If SpriteCollision(3,startX,startY,2, infX(x)+x,infY(x)+x)=1 And MouseButton(1)=1
      marked(x)=1
    ElseIf SpriteCollision(3,startX,startY,2, infX(x)+x,infY(x)+x)=0 And MouseButton(1)=1
      marked(x)=0
      
    EndIf
    If beweg(x)=1 
    If infX(x) >zielX(x)
      infX(x)=infX(x)-1
  
    ElseIf infX(x) < zielX(x)
      infX(x)=infX(x)+1
    EndIf
    If infY(x) > zielY(x)
      infY(x)=infY(x)-1
   
    ElseIf infY(x) < zielY(x)
      infY(x)=infY(x)+1
    EndIf

  EndIf
  If infX(x)=zielX(x) And infY(x) = zielY(x)
    beweg(x)=0
  EndIf
  
   DisplayTransparentSprite(2,infX(x)+x,infY(x)+x)
  If marked(x)=1
    StartDrawing(ScreenOutput())
    Circle(infX(x)+x+20,infY(x)+x+10,5,RGB(0,255,0))
    Locate(infX(x)+x+15,infY(x)+x+3)
    DrawingMode(1)
    DrawText(Str(x))
    StopDrawing()
  EndIf
   Next
  
    If MouseButton(1)=1
    If mark=0
      mark=1
      startX=MouseX()
      startY=MouseY()
      For x=1 To #max
        marked(x)=0
      Next
       EndIf
    
    StartDrawing(ScreenOutput())
    DrawingMode(4)
    Box(startX,startY,MouseX()-startX,MouseY()-startY,RGB(0,255,0))
    StopDrawing()
    
    FreeSprite(3)
    If GrabSprite(3,startX,startY,MouseX()+1-startX,MouseY()+1-startY,0)
    ElseIf  GrabSprite(3,MouseX(),MouseY(),startX,startY,0)
    ElseIf  GrabSprite(3,startX,MouseY(),MouseX(),startY,0)
    ElseIf  GrabSprite(3,MouseX(),startY,startX,MouseY(),0)  
    Else
      LoadSprite(3,"grafic\1x1.bmp")
    EndIf
  Else
    mark=0
     EndIf
  ExamineMouse()
  If MouseButton(2)=1 And pressed=0
    dauer=50
    markierX=MouseX()
    markierY=MouseY()
    pressed=1
    PlaySound(1)
    For x=1 To #max
      If marked(x)=1
        beweg(x)=1
        zielX(x)=markierX
        zielY(x)=markierY
        
      EndIf
    Next
    
    EndIf
  
  If dauer > 0
    dauer=dauer-1
    StartDrawing(ScreenOutput())
    DrawingMode(4)
    Circle(markierX,markierY,5,RGB(0,255,0))
    Circle(markierX,markierY,15,RGB(0,255,0))
    StopDrawing()
  Else
    pressed=0
  EndIf
  StartDrawing(ScreenOutput())
  DrawingMode(1)
  FrontColor(255,255,255)
  Locate(900,10)
  DrawText(Str(trans)+" "+Str(add))
  Locate(900,23)
  DrawText("MouseX:"+Str(MouseX()))
  Locate(900,36)
  DrawText("MouseY:"+Str(MouseY()))
  Locate(900,49)
  DrawText("StartX:"+Str(startX))
  Locate(900,62)
  DrawText("StartY:"+Str(startY))
  
  StopDrawing()
  DisplaySprite(3,100,100)
  Start3D()
  DisplaySprite3D(0,MouseX(),MouseY(),trans)
  
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
1x1.bmp
Bild
infantrie.bmp
Bild
cursor.bmp
Bild
gras.bmp
Bild

der sound is ja nich so wichtig
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Antworten