Diskuze: SmallBasic ovladání na klavesnici

Ostatní jazyky Ostatní programovací jazyky SmallBasic ovladání na klavesnici

Avatar
Jurajs
Člen
Avatar
Jurajs:

Ahoj, mám problém, kdo umí ve SmallBasic, prosím poraďte. Jde vlastně o to, že nemůžu rozchodit ovladání pomocí šipek. viz kód na obrázku. Děkuji za rady.

 
Odpovědět 9.5.2015 20:34
Avatar
Odpovídá na Jurajs
Ondřej Štorc:

A překresluješ ten obraz pokaždé když s tím pohneš?

Nahoru Odpovědět 9.5.2015 20:38
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Jurajs
Michael Škrášek:
y = 10
GraphicsWindow.KeyDown = key_down

Sub key_down
  last = GraphicsWindow.LastKey
  If (last = "Down") Then
    y = y + 1
    GraphicsWindow.DrawRectangle(10, y, 10, 1)
  EndIf
EndSub

Mně funguje, nepřekresluješ ten čtverec, zkus dát celej kód ;)

Editováno 9.5.2015 21:42
Nahoru Odpovědět  +1 9.5.2015 21:41
Proč to dělat složitě, když to jde jednoduše.
Avatar
Jurajs
Člen
Avatar
Odpovídá na Michael Škrášek
Jurajs:
dimension object
dimX = 50
dimY = 50
'position object
posX = 10
posY = 10

'controls keyborad
Sub OnKeyDown
  If GraphicsWindow.LastKey = "Up" Then
    posY = posY - 1
    GraphicsWindow.DrawRectangle(posX, posY,dimX, dimY)
    ElseIf GraphicsWindow.LastKey = "Down" Then
    posY = posY + 1
    GraphicsWindow.DrawRectangle(posX, posY, dimX, dimY)
    EndIf
  EndSub
  'end controls keyboard

Ctverec se mi pohybuje ale, jak udelat aby nebyl zaním ten cerny pruh? Dělam něco spatne? Díky

Editováno 9.5.2015 22:02
 
Nahoru Odpovědět 9.5.2015 22:01
Avatar
Odpovídá na Jurajs
Ondřej Štorc:

A co třeba před každým novým vykreslenim toho čtverce vyčistit plátno (proste ho třeba cely prebarvit bílou..)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 9.5.2015 22:15
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Jurajs
Michael Škrášek:

Sice ho vykresluješ na novou pozici, ale nemažeš starou, pokud jsem to správně pochopil.

dimX = 50
dimY = 50

posX = 10
posY = 10

GraphicsWindow.KeyDown = OnKeyDown

Sub OnKeyDown
  If GraphicsWindow.LastKey = "Up" Then
    smaz_starou()
    posY = posY - 1
    GraphicsWindow.FillRectangle(posX, posY,dimX, dimY)

  ElseIf GraphicsWindow.LastKey = "Down" Then

    smaz_starou()

    posY = posY + 1
    GraphicsWindow.FillRectangle(posX, posY, dimX, dimY)
  ElseIf GraphicsWindow.LastKey = "Right" Then

    smaz_starou()

    posX = posX + 1
    GraphicsWindow.FillRectangle(posX, posY, dimX, dimY)
  ElseIf GraphicsWindow.LastKey = "Left" Then

    smaz_starou()

    posX = posX - 1
    GraphicsWindow.FillRectangle(posX, posY, dimX, dimY)
  EndIf
EndSub

Sub smaz_starou
  GraphicsWindow.BrushColor = GraphicsWindow.BackgroundColor
  GraphicsWindow.PenColor = GraphicsWindow.BackgroundColor

  GraphicsWindow.FillRectangle(posX, posY, dimX, dimY)

  GraphicsWindow.PenColor = "Black"
  GraphicsWindow.BrushColor = "Black"
EndSub
Editováno 9.5.2015 22:19
Nahoru Odpovědět  +1 9.5.2015 22:18
Proč to dělat složitě, když to jde jednoduše.
Avatar
Jurajs
Člen
Avatar
Jurajs:

Díky moc všem co mi chtěli pomoci už to vykresluje a funguje tak jak mí díky moc VŠEM!! :D :)
Tady je moje cele řešení Díky moc!! :)

Sub OnKeyDown
  If GraphicsWindow.LastKey = "Up" Then
    posY = posY - 1
    GraphicsWindow.Clear()
    GraphicsWindow.DrawRectangle(posX, posY,dimX, dimY)
    ElseIf GraphicsWindow.LastKey = "Down" Then
      posY = posY + 1
      GraphicsWindow.Clear()
    GraphicsWindow.DrawRectangle(posX, posY, dimX, dimY)
      ElseIf GraphicsWindow.LastKey = "Right" Then
        posX = posX + 1
        GraphicsWindow.Clear()
    GraphicsWindow.DrawRectangle(posX, posY, dimX, dimY)
    ElseIf GraphicsWindow.LastKey = "Left" Then
      posX = posX - 1
      GraphicsWindow.Clear()
    GraphicsWindow.DrawRectangle(posX, posY, dimX, dimY)
    EndIf
  EndSub
  'end controls keyboard
 
Nahoru Odpovědět 9.5.2015 22:19
Avatar
Nahoru Odpovědět 9.5.2015 22:19
Proč to dělat složitě, když to jde jednoduše.
Avatar
Jurajs
Člen
Avatar
Odpovídá na Michael Škrášek
Jurajs:

Ja už včera večer jsem začal, až dnes jsem to konečně... myslel jsem to správně, ale blbá chyba... vykreslení jsem měl uplně někde jinde a to clear to jsem dal, až mi to poradil po druhé Štorc. :D

 
Nahoru Odpovědět 9.5.2015 22:24
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.