[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
полоска жизни.
dfДата: Воскресенье, 07 Декабря 2008, 21:01 | Сообщение # 1
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
подскажите как сделать полоску жизни(,маны,силы) из спрайта???

как сделать изменения для не обычной полоски жизни.
такой вот:

вот для этого



 
ПрохожийДата: Воскресенье, 07 Декабря 2008, 22:17 | Сообщение # 2
Группа: Гости





df, Нафиг тебе из спрайта?
 
dfДата: Воскресенье, 07 Декабря 2008, 22:45 | Сообщение # 3
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
Quote
df, Нафиг тебе из спрайта?

потому что:
1.Оформление сделано спрайтом по этому красивее и удобней делать полоску спрайтом, шоб подходила под .
2.чтоб плавное смена была

Quote
Думаю для плавности .
Можно сделать так .
Если кол-во жизни 100% то показывается полная полоска .
Если 90% то другая и т.д.

book Дайте код, я по словам не спеце писать коды, тем более в данной части



 
FARTДата: Понедельник, 08 Декабря 2008, 11:21 | Сообщение # 4
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
Пример с изображением:
Сначала загружаеш допустим картинку: hp = LoadImage("Путь к изображению")
Таких изображений загружай столько сколько тебе надо (чем больше тем лудше)

Потом создаём типы:
type_user=1 (тип игрока)
type_bot=4 (тип того что будет отнимать жизни)
Присваеваем типы:
1) Игроку:
user=CreateCube()
PositionEntity user,0,1.5,0
EntityType user,type_user
2) Тому что будет отнимать жизни
bot=CreateCube()
EntityColor bot,255,1,1
PositionEntity bot,0,3,6
ScaleEntity bot,1,2,1
EntityType bot,type_bot
Создаём столкновение между игроком и ботом:
Collisions type_user,type_bot,2,2
Создаём жизни:
shisni = 100
Загружаем изображения жизни
hel1 = LoadImage("hel-1.jpg")
hel2 = LoadImage("hel-2.jpg")
Делаем услови (Если происходит столкновение то от жизни отнимаем 1 ) :

If EntityCollided (user,type_bot) hel = hel - 1

Теперь создаём условие на вывод изображения (между RenderWorld И Flip) :
If hel < 50
DrawImage hel2,2,2
EndIf

Вродебы всё...Ну вот пример:

Code

Graphics3D 800,600,32,1
SetBuffer BackBuffer()     

type_user=1    
type_bot=4
     

bot=CreateCube()
EntityColor bot,255,1,1
PositionEntity bot,0,3,6
ScaleEntity bot,1,2,1
EntityType bot,type_bot
EntityRadius bot,1.8

Collisions type_user,type_bot,2,2

user=CreateCube()    
PositionEntity user,0,1.5,0   
EntityType user,type_user   
EntityRadius user,1.8

svet=CreateLight()     
cam=CreateCamera()    
EntityParent cam,user    
PositionEntity cam,0,15,-20

terasa=CreatePlane()     
tex=LoadTexture("terasa.jpg")   
ScaleTexture tex,10,10   
EntityTexture terasa,tex    

hel=100

      
Repeat

hel1 = LoadImage("hel-1.jpg")
hel2 = LoadImage("hel-2.jpg")
hel3 = LoadImage("hel-3.jpg")

If EntityCollided (user,type_bot) hel = hel - 1

If KeyDown(57)
CameraZoom cam,2
Else
CameraZoom cam,1
EndIf   

If KeyDown(200) MoveEntity user,0,0,0.08
   If KeyDown(208) MoveEntity user,0,0,-0.08
   If KeyDown(203) TurnEntity user,0,0.8,0   
   If KeyDown(205) TurnEntity user,0,-0.8,0
     

UpdateWorld()      
RenderWorld()   
If hel = 100   
DrawImage hel1,2,2
EndIf   
If hel <= 50   
DrawImage hel2,2,2
FreeImage(hel1)
EndIf
If hel < 1
DrawImage hel3,2,2
FreeImage(hel2)
EndIf    

Flip    
Until KeyHit(1)    
End    


Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !


Сообщение отредактировал АФКЕ - Понедельник, 08 Декабря 2008, 11:23
 
dfДата: Понедельник, 08 Декабря 2008, 15:16 | Сообщение # 5
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
спасиб.


 
FARTДата: Среда, 10 Декабря 2008, 08:37 | Сообщение # 6
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
ASoftware, даааа не подумал я.... hands

Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !
 
DarkMedveDДата: Среда, 10 Декабря 2008, 18:05 | Сообщение # 7
Профи
Группа: Участники
Сообщений: 260
Награды: 0
Замечания: 0%
Статус:

Профессия: Програмист,немного моделлер
Команда: Сам Себе НачальниГ
Проектов: 2
Ну ппц я думал это самая простая вещь в блитз!!!!

Делается всё так

PlayerLife=100 ;Это переменная жизней игрока

If <Какое то условие,попадание например>
<какое то действие,уменьшение например>
PlayerLife=PlayerLife-10
EndIf

Теперь самое главное

Rect 130,610,PlayerLife,10,1 ; Рисование прямоугольника,взависимости от жизни длинна будет будет меняться



Это и есть Zoom-Zoom
 
FARTДата: Среда, 10 Декабря 2008, 18:42 | Сообщение # 8
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
DarkMedveD
ты наверное не понял, почитай что написал автор темы...Ему нужно именно спрайтами... cool
Quote (df)
подскажите как сделать полоску жизни(,маны,силы) из спрайта???


Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !
 
DarkMedveDДата: Четверг, 11 Декабря 2008, 14:59 | Сообщение # 9
Профи
Группа: Участники
Сообщений: 260
Награды: 0
Замечания: 0%
Статус:

Профессия: Програмист,немного моделлер
Команда: Сам Себе НачальниГ
Проектов: 2
ну если из спрайта,то не знаю...а смысл из спрайта???помоему ректом удобнее...


Это и есть Zoom-Zoom
 
OptimusДата: Четверг, 11 Декабря 2008, 16:41 | Сообщение # 10
Крутой
Группа: Участники
Сообщений: 646
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Solomanders te@m
Проектов: TripleWar(разработка)
Спасибо, вы и мне помогли!!!! ASoftware, +1

Internet Explorer-замечательный браузер для того чтобы зайти и скачать Firefox
 
dfДата: Четверг, 11 Декабря 2008, 17:16 | Сообщение # 11
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
Quote
ну если из спрайта,то не знаю...а смысл из спрайта???помоему ректом удобнее...

ПОЧЕМУ???
ЧТОБ ПОДХОДИЛ ПОД ПАНЕЛЬ СТАТУС-БАРА.

посмотрите как сделана он:

под неё специально сделаны полоски жизни.



 
FARTДата: Четверг, 11 Декабря 2008, 17:26 | Сообщение # 12
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
ASoftware, а разве получится зделать как сказал ты такую полоску как Пост # 1 ???
Тогда уже можно будет зделать так
Загружает картинку, при попадании он удаляет первую картику (FreeImage(перем)) и ставит другую...


Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !


Сообщение отредактировал АФКЕ - Четверг, 11 Декабря 2008, 17:28
 
dfДата: Четверг, 11 Декабря 2008, 17:34 | Сообщение # 13
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
в коде как это сделать???
и как то проверка слишком резкая не возможно проверить работу





Сообщение отредактировал df - Четверг, 11 Декабря 2008, 17:49
 
FARTДата: Четверг, 11 Декабря 2008, 17:45 | Сообщение # 14
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
df, Пост # 6 (я там сразу так и зделал.)

Code

Graphics3D 800,600,32,1  
SetBuffer BackBuffer()      

type_user=1     
type_bot=4  
       

bot=CreateCube()  
EntityColor bot,255,1,1  
PositionEntity bot,0,3,6  
ScaleEntity bot,1,2,1  
EntityType bot,type_bot  
EntityRadius bot,1.8  

Collisions type_user,type_bot,2,2  

user=CreateCube()     
PositionEntity user,0,1.5,0    
EntityType user,type_user    
EntityRadius user,1.8  

svet=CreateLight()      
cam=CreateCamera()     
EntityParent cam,user     
PositionEntity cam,0,15,-20  

terasa=CreatePlane()      
tex=LoadTexture("terasa.jpg")    
ScaleTexture tex,10,10    
EntityTexture terasa,tex     

hel=100  

        
Repeat  

hel1 = LoadImage("1.jpg")  
hel2 = LoadImage("2.jpg")  
hel3 = LoadImage("3.jpg")  

If EntityCollided (user,type_bot) hel = hel - 1  

If KeyDown(57)  
CameraZoom cam,2  
Else  
CameraZoom cam,1  
EndIf    

If KeyDown(200) MoveEntity user,0,0,0.08  
    If KeyDown(208) MoveEntity user,0,0,-0.08  
    If KeyDown(203) TurnEntity user,0,0.8,0    
    If KeyDown(205) TurnEntity user,0,-0.8,0  
       

UpdateWorld()       
RenderWorld()
DrawImage hel1,2,2     
If hel <= 50  
FreeImage(hel1)   
DrawImage hel2,2,2  
   
EndIf  
If hel < 1  
FreeImage(hel2)
DrawImage hel3,2,2  
   
EndIf     

Flip     
Until KeyHit(1)     
End    

wink


Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !
 
dfДата: Четверг, 11 Декабря 2008, 18:02 | Сообщение # 15
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
тупой вопрос а как это сделать на 100 и 50 картинок.
и как сделать более плавное избиение перса чтоб было можно проверить работу полоски.



 
HarterДата: Четверг, 11 Декабря 2008, 18:14 | Сообщение # 16
Профи
Группа: Участники
Сообщений: 251
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: NON FORMAT
Проектов: 2
Спрайты здесь причем? Все это делается с помошью функции Rect.


 
FARTДата: Четверг, 11 Декабря 2008, 18:20 | Сообщение # 17
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
Quote (df)
тупой вопрос а как это сделать на 100 и 50 картинок.

Ну сначала их нада загрузить
hel1 = LoadImage("1.jpg")
hel2 = LoadImage("2.jpg")
hel3 = LoadImage("3.jpg")
hel4 = LoadImage("4.jpg")
hel5 = LoadImage("5.jpg")
и так далее до:
hel100 = LoadImage("100.jpg")

Потом:
Выводим первыю картинку сразу
DrawImage hel1,2,2
И остальные взависимости от условия:
If hel <= 99
FreeImage(hel1)
hel2 = LoadImage("2.jpg")
DrawImage hel2,2,2
EndIf
If hel <= 98
FreeImage(hel2)
hel3 = LoadImage("3.jpg")
DrawImage hel3,2,2
EndIf
If hel <= 97
FreeImage(hel3)
hel4 = LoadImage("4.jpg")
DrawImage hel4,2,2
EndIf
и так далее до:
If hel <= 1
FreeImage(hel99)
hel4 = LoadImage("100.jpg")
DrawImage hel100,2,2
EndIf
И после этого получается что мы одну полосу делим на 100 кусочком и от одного раза попадания противника отнимаетца 1 (из 100) жизней и 1-на (тоже из 100) полоска.... dry


Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !
 
FARTДата: Четверг, 11 Декабря 2008, 18:29 | Сообщение # 18
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
Harter, с помощью этой команды он нарисует прямоугольник текущего цвета с указанными в параметрах координатами и размерами...) А ему нужен не простой прямоугольник... cool

Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !


Сообщение отредактировал АФКЕ - Четверг, 11 Декабря 2008, 18:31
 
dfДата: Четверг, 11 Декабря 2008, 19:15 | Сообщение # 19
Продвинутый
Группа: Участники
Сообщений: 144
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Легион Темной Лисы(LDF)
Проектов: 1
жесть
тока при загруженных 50 спрайтах(без кода на них) FPS составляет 1-5
че делать???

ну если делать здоровье с помощью функции Rect
то подреген все ровно сделан спрайтом (если конечно незя как то сделать скошенную линию через код)



 
FARTДата: Четверг, 11 Декабря 2008, 19:49 | Сообщение # 20
Продвинутый
Группа: Участники
Сообщений: 192
Награды: 0
Замечания: 0%
Статус:

Профессия: ПрогрАммисТ
Команда: DiamonD StudiO
А может ты лудше чуть измениш полоску ?
И зделаеш её допустим типа цилиндра ?
И тогда при попадании уменьшать...
Хоть не скошеная линия но тоже красиво получится..


Помогло сообщение ? Ставь плюсик в РЕПУТАЦИЮ !
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: