PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Кодинг.

Сообщений 1 страница 18 из 18

1

Добрый день. Сейчас пишу программу. Хотелось бы получить помощь на этом форуме.

Есть код

Код:
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf

If OpenScreen(1024,768,16,"Sheller")
  MouseLocate(1024/2, 768/2)
  Repeat
    FlipBuffers()
    ClearScreen(RGB(86,140,255))
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
    DrawText(10,768/2,"Добро пожаловать в программу Sheller",$FFFFFF)
    DrawText(10,768/2-15,"Добрый день!",$FFFFFF)
    DrawText(10,768/2+15,"Нажмите [Enter] для продолжения или [End] для выхода",$FFFFFF)
    StopDrawing()
  Until KeyboardPushed(#PB_Key_End)
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End

И есть спрайт http://upload.com.ua/get/902639444/skate.png

Как сделать, чтобы человечек на скейт выезжал из-за экран у уезжал за экран без каких-либо действий со стороны пользователя.

Отредактировано Сергей (01.06.2011 12:42:55)

0

2

Вот еще вопрос. Я дальше программирую и встречаю такую проблему:

Код:
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf

Procedure menu()
  ClearScreen(RGB(86,140,255))
  ExamineKeyboard()
  StartDrawing(ScreenOutput())
  StopDrawing()
EndProcedure

If OpenScreen(1024,768,16,"Sheller")
  MouseLocate(1024/2, 768/2)
  Repeat
    FlipBuffers()
    ClearScreen(RGB(86,140,255))
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
    DrawText(10,768/2,"Добро пожаловать в программу Sheller",$FFFFFF)
    DrawText(10,768/2-15,"Добрый день!",$FFFFFF)
    DrawText(10,768/2+15,"Нажмите [Enter] для продолжения или [End] для выхода",$FFFFFF)
    StopDrawing()
    If KeyboardPushed(#PB_Key_Return)
      menu()
    EndIf
  Until KeyboardPushed(#PB_Key_End)
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End

По идее после нажатия энтер должен очищаться экран, но он не очищается. точнее очищается на долю секунды, а потом снова текст как в начале.

0

3

Сергей написал(а):

Как сделать, чтобы человечек на скейт выезжал из-за экран у уезжал за экран без каких-либо действий со стороны пользователя.

Если инет позволяет, то смотрим:
http://www.youtube.com/watch?v=1RX2QHPvRRk
http://www.youtube.com/watch?v=0EHHcCsa2fw
http://www.youtube.com/watch?v=ECYDTG_YW6Q
http://www.youtube.com/watch?v=-55nAV3cZXY

Сергей написал(а):

По идее после нажатия энтер должен очищаться экран, но он не очищается.

Он и так несколько десятков раз в секунду очищается функцией ClearScreen.
При нажатии Enter, нужно запрещать вывод текста.

Код:
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf

Start = 0

If OpenScreen(1024,768,16,"Sheller")
  MouseLocate(1024/2, 768/2)
  Repeat
    FlipBuffers()
    ClearScreen(RGB(86,140,255))
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
      If Start = 0
        DrawText(10,768/2,"Добро пожаловать в программу Sheller",$FFFFFF)
        DrawText(10,768/2-15,"Добрый день!",$FFFFFF)
        DrawText(10,768/2+15,"Нажмите [Enter] для продолжения или [End] для выхода",$FFFFFF)
      EndIf
    StopDrawing()
    If KeyboardPushed(#PB_Key_Return)
      Start = 1
    EndIf
  Until KeyboardPushed(#PB_Key_End)
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End

+1

4

Интернет позволяет. Спасибо с выводом текста.

0

5

Есть еще один вопрос. Как удержать изображения после нажатия на энтер, потому что они сразу исчезают

Код:
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf

UsePNGImageDecoder()
UsePNGImageEncoder()

CatchImage(1, ?Im1, ?Im1End -?Im1)

Procedure menu()
  ClearScreen(RGB(86,140,255))
  ExamineKeyboard()
  StartDrawing(ScreenOutput())
  DrawImage(ImageID(1),141,86,300,255)
  DrawImage(ImageID(1),583,86,300,255)
  DrawImage(ImageID(1),141,427,300,255)
  DrawImage(ImageID(1),583,427,300,255)
  StopDrawing()
EndProcedure

Start = 0

If OpenScreen(1024,768,16,"Sheller")
  MouseLocate(1024/2, 768/2)
  Repeat
    FlipBuffers()
    ClearScreen(RGB(86,140,255))
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
    If Start = 0
      BackColor(RGB(86,140,255))
      FrontColor($FFFFFF)
      DrawImage(ImageID(1),365,110,300,255)
      DrawText(370,400,"Добро пожаловать в программу Sheller")
      DrawText(450,385,"Добрый день!")
      DrawText(310.5,415,"Нажмите [Enter] для продолжения или [End] для выхода")
    EndIf
    StopDrawing()
    If KeyboardPushed(#PB_Key_Return)
      Start = 1
      menu()
    EndIf
  Until KeyboardPushed(#PB_Key_End)
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End

DataSection
  Im1:
  IncludeBinary "1.png"
  Im1End:
EndDataSection

Отредактировано Сергей (01.06.2011 20:35:07)

0

6

Код:
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf

UsePNGImageDecoder()
UsePNGImageEncoder()

CatchImage(1, ?Im1, ?Im1End -?Im1)

Procedure menu()
;   ClearScreen(RGB(86,140,255))
;   ExamineKeyboard()
;   StartDrawing(ScreenOutput())
;   
;   StopDrawing()
EndProcedure

Start = 0

If OpenScreen(1024,768,16,"Sheller")
  MouseLocate(1024/2, 768/2)
  Repeat
    FlipBuffers()
    ClearScreen(RGB(86,140,255))
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
    If Start = 0
      BackColor(RGB(86,140,255))
      FrontColor($FFFFFF)
      DrawImage(ImageID(1),365,110,300,255)
      DrawText(370,400,"Добро пожаловать в программу Sheller")
      DrawText(450,385,"Добрый день!")
      DrawText(310.5,415,"Нажмите [Enter] для продолжения или [End] для выхода")
    Else
      DrawImage(ImageID(1),141,86,300,255)
      DrawImage(ImageID(1),583,86,300,255)
      DrawImage(ImageID(1),141,427,300,255)
      DrawImage(ImageID(1),583,427,300,255)
    EndIf
    StopDrawing()
    If KeyboardPushed(#PB_Key_Return)
      Start = 1
      menu()
    EndIf
  Until KeyboardPushed(#PB_Key_End)
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End

DataSection
  Im1:
  IncludeBinary "1.png"
  Im1End:
EndDataSection

0

7

Добрый день, все продвигается  хорошо, но я застопорился.
Как указать, чтобы файлы программа искала именно в своей папке. То есть файл находится где-нибудь в Documents and Settings, а прога в Program Files и чтоб файл обрашался к той дирректории не зная ее точного места расположения.

Отредактировано Сергей (02.06.2011 07:46:05)

0

8

Сергей написал(а):

чтоб файл обрашался к той дирректории не зная ее точного места расположения.

Для этого нужно наделить прогу телепатическими способностями чтобы она не зная точного расположения файла сразу его находила без долгого поиска.

Сергей написал(а):

искала именно в своей папке

Это папка в которой запущена прога, а если она находится в Program Files, то именно эта папка будет "своей".

Сергей написал(а):

чтоб файл обращался к той директории не зная ее точного места расположения.

Подробней можно?
Типа этого что-ли?

Код:
Procedure.s GetFolderLocation(Valeur.l) 
  If SHGetSpecialFolderLocation_(0, Valeur, @Dossier_ID) = 0 
    SpecialFolderLocation.s = Space(#MAX_PATH) 
    SHGetPathFromIDList_(Dossier_ID, @SpecialFolderLocation) 
    If SpecialFolderLocation 
      If Right(SpecialFolderLocation, 1) <> "\" 
        SpecialFolderLocation + "\" 
      EndIf 
    EndIf 
  EndIf 
  ProcedureReturn SpecialFolderLocation.s 
EndProcedure

Debug GetFolderLocation(26)+"MyProgSetting\"

0

9

Но вот, например у кто-то прогу установил в D:\Proga\, а ктото в програм файлс. так файл в документс энд сеттингс должен найти. куда именно установленна прога.

0

10

Честно, ничего не понял.

0

11

Может имелось ввиду что куда бы программа не устанавливалась, её рабочая папка всегда будет располагаться в Documents and Settings?

0

12

Дмитрий написал(а):

её рабочая папка всегда будет располагаться в Documents and Settings?

Ну я это предложил в Кодинг.
Там показано как получить адрес папки.

0

13

Извиняюсь Пётр! Не заметил. :dontknow:

0

14

можете прокоментировать код.

0

15

Есть пара вопросов.
1. Можно как-то управлять сменой обоев
2. Можно, чтобы чтото в полноэкранном приложение запускалось кликом по изображению
3. Как сделать отображение курсора в полноэкранном режиме.

Отредактировано Сергей (02.06.2011 22:18:31)

0

16

Поясняю.

Код:
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf

UsePNGImageDecoder()
UsePNGImageEncoder()

CatchImage(1, ?Im1, ?Im1End -?Im1)

Start = 0

If OpenScreen(1024,768,16,"Sheller")
  MouseLocate(1024/2, 768/2)
  Repeat
    FlipBuffers()
    ClearScreen(RGB(86,140,255))
    ExamineKeyboard()
    StartDrawing(ScreenOutput())
    If Start = 0
      BackColor(RGB(86,140,255))
      FrontColor($FFFFFF)
      DrawImage(ImageID(1),365,110,300,255)
      DrawText(370,400,"Добро пожаловать в программу Sheller")
      DrawText(450,385,"Добрый день!")
      DrawText(310.5,415,"Нажмите [Enter] для продолжения или [End] для выхода")
    ElseIf Start = 1
      DrawImage(ImageID(1),141,86,300,255)
      DrawImage(ImageID(1),583,86,300,255)
      DrawImage(ImageID(1),141,427,300,255)
      DrawImage(ImageID(1),583,427,300,255)
    EndIf
    StopDrawing()
    If KeyboardPushed(#PB_Key_Return)
      Start = 1
      menu()
    EndIf
  Until KeyboardPushed(#PB_Key_End)
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End

DataSection
  Im1:
  IncludeBinary "1.png"
  Im1End:
EndDataSection

Как сделать, чтобы в Start = 1 при клике не определенное изображение значения старт менялось например с 1 на 7

0

17

Сергей написал(а):

1. Можно как-то управлять сменой обоев

Смена обоев рабочего стола

Сергей написал(а):

3. Как сделать отображение курсора в полноэкранном режиме.

Закругить картинку курсора как спрайт и перемещать этот спрайт по экрану в зависимости от текущих коррдина мышки на экране, которые можно получить функциями MouseX() и MouseY().
Вот пример с курсором и с кликом по изображению.

Сергей написал(а):

2. Можно, чтобы чтото в полноэкранном приложение запускалось кликом по изображению

Клик можно зафиксировать функцией MouseButton.
После этого нужно проверить есть ли пересечение между текущей позифией курсора-спрайта и спрайта изображения. Для этого используем функцию SpriteCollision.

PS.
Посмотри тут http://www.cyberforum.ru/basic/thread25953-page2.html
Там есть примеры полноэкранного режима.

0

18

Сергей написал(а):

Как сделать, чтобы человечек на скейт выезжал из-за экран у уезжал за экран без каких-либо действий со стороны пользователя.

Вот материал по анимации спрайтов. http://purebasic.ucoz.com/publ/perevod/ … /5-1-0-135

0