FreeBasic
Главная
Вход
Регистрация
Вторник, 16.04.2024, 13:23Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » Почему не работает спрайт? (Помогите новичку!)
Почему не работает спрайт?
ExEДата: Вторник, 10.02.2015, 18:56 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline
Загружаю спрайт с помощью BLoad, а на экране заместо него непонятные цветные точки!
Прикрепляю исходник. Скачать с Яндекс Диск

Заранее прошу прощения у админов, если для этого уже есть отдельная тема, я на этом форуме только второй раз пишу.
 
CoBa31RusДата: Среда, 11.02.2015, 07:46 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
Мее кажется или ты грузишь прямо на экран? Может стоит грузить буфер а уже его в цикле рисовать на экрвн
 
haavДата: Среда, 11.02.2015, 08:30 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Подправил пример. Сравнивая, найдете ошибки.

Код
#Include "fbgfx.bi"
Using FB

Dim Shared ShipSprites(4) As any Ptr ' integer не правильно!!!!!
'Dim Shared workpage As Single = 0

Screen 12,16
SetMouse 0,0,0

BLoad "SpaceShip.bmp",0
For imagepos As Integer = 1 To 4
   ShipSprites(imagepos) = ImageCreate(20,20)
   Get ((imagepos-1)*20,0)- Step(19,19),ShipSprites(imagepos)
Next imagepos

Type Player
   x As Integer
   y As Integer
   Direction As Integer
   Speed As Single
End Type

Dim Shared Ship As Player
Ship.x = 320
Ship.y = 240
Ship.Direction = 1
Ship.Speed = .6

Do
   'ScreenSet workpage, workpage xor 1 <- не нужно, вы не используете двойную буферизацию, а используете запирание буфера с помощью ScreenLock
     ScreenLock
     cls
     Put (Ship.x,Ship.y),ShipSprites(Ship.Direction),Trans
      
     ScreenUnLock
      Sleep 1
     'workpage Xor = 1
   If MultiKey(SC_W) Then
    Ship.y = ship.y - ship.Speed
    Ship.Direction = 1
   EndIf
   If MultiKey(SC_A) Then
    Ship.x = ship.x - ship.Speed
    Ship.Direction = 3
   EndIf
   If MultiKey(SC_D) Then
    Ship.x = Ship.x + Ship.Speed
    Ship.Direction = 2
   EndIf
   If MultiKey(SC_S) Then
    Ship.y = Ship.y + Ship.Speed
    Ship.Direction = 4
   EndIf
Loop Until MultiKey(SC_ESCAPE)

End


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Форум » Freebasic » Вопросы по языку FreeBasic » Почему не работает спрайт? (Помогите новичку!)
  • Страница 1 из 1
  • 1
Поиск: