Diskuze: SmallBasic ovladání na klavesnici

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

Aktivity (1)
Avatar
Jurajs
Člen
Avatar
Jurajs:9.5.2015 20:34

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:9.5.2015 20:38

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:9.5.2015 21:41
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:9.5.2015 22:01
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:9.5.2015 22:15

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:9.5.2015 22:18

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:9.5.2015 22:19

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
Odpovídá na Ondřej Štorc
Michael Škrášek:9.5.2015 22:19

Tak jsem to dlouho psal .... :DDDD

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:9.5.2015 22:24

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.