|
2D-программирование Вопросы, касающиеся двумерного программирования |
23.01.2006, 13:26
|
#1
|
Бывалый
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений (для 5 пользователей)
|
Ну как всегда у меня полторы пары вопросов, сегодня по Типам
1
как в типе:
Type tNPC
;...
;...
Field name
Field Head#;здоровье головы
Field Legs#;здоровье ноги
Field Belly#;здоровье живот
Field Tors#;здоровье торса
;....
Field Magic1#;удар магии
Field Strength#;кулачный удар
Field Weapont#;удар с приминением оружия
;....
End Type
посчитать средние значение показателей здоровья и наини меньшее из них
2 Делаю тах и выкатывает ошибку "Object does not exist", ваще непонимаю в чом дело
Type TBody
Field Head#;здоровье головы
Field Legs#;здоровье ноги
Field Belly#;здоровье живот
Field Tors#;здоровье торса
End Type
Type TUdar;Сила удара
Field Magic1#;удар магии
Field Strength#;кулачный удар
Field Weapont#;удар с приминением оружия
End Type
Type tNPC
Field health.tbody
Field udar.tudar
Field name
End Type
Function NewNPC.Tnpc(nName,hHead#,hTors#,hBelly#,hLegs#,uMa gic1,uStr,uWeap)
;задаем параметры нового игрока
Local n.tNPC=New tNPC
n\health\Head=hHead
n\health\Belly=hbelly#
n\health\Legs=hlegs#
n\health\Tors=htors#
Return n
End Function
Graphics3D 640,480,16,2
SetBuffer BackBuffer()
SetFont LoadFont("arial cyr",16)
cam=CreateCamera()
PositionEntity cam,0,30,-20
Ground=CreatePlane()
texa=CreateTexture( 63,63,9)
ScaleTexture texa,10,10
SetBuffer TextureBuffer(texa)
Color 128,128,128
Rect 32,0,32,32
Rect 0,32,32,32
Color 255,255,255
Rect 32,32,32,32
Rect 0,0,32,32
SetBuffer BackBuffer()
EntityTexture Ground,texa
FreeTexture texa
OrigMonster=CreateCube()
EntityColor OrigMonster,255,0,0
HideEntity OrigMonster
;###############################
n1.tnpc=NewNPC( "0", 25,25,25,25,6, 18,3)
n2.tnpc=NewNPC( "1", 18,18,18,18,13, 12,6)
;###############################
While Not KeyDown(1)
UpdateWorld
RenderWorld
Flip
Wend
End
;
3. как лутше организовать хранение параметров каждого парсонажа в RPG (ролевой) игре [параметры следующие: жизнь и тп, там несколько магии, владение разным оружием ну как в любой RPG]
|
(Offline)
|
|
23.01.2006, 14:16
|
#2
|
|
ессно что хранить типами
а вот етот гемор (я про юзание функции типа function lalala.blablabla())
надо заманить на handle
|
|
|
23.01.2006, 15:34
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Не вижу ничего дурного в lalala.blablabla()
как и в хендлах - всему своё место.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
24.01.2006, 09:31
|
#4
|
Оператор ЭВМ
Регистрация: 12.01.2006
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
To AKIMA
Для типа TNPC полями являются другие типы. А ты их не создаешь и сразу присваивешь какие-то значения. Попытка обращения к несуществуещему объекту, естественно, дает ошибку.
Инициализующая функция должна быть такой:
Function NewNPC.Tnpc(nName,hHead,hTors#,hBelly#,hLegs#,uMagic1,uStr,uWeap)
*n.tNPC = New tNPC
* *n\health.TBody * = New TBody
* *n\udar.TUdar * * = New TUdar
* * *n\health\Head *= hHead
* * *n\health\Belly = hbelly#
* * *n\health\Legs *= hlegs#
* * *n\health\Tors *= htors#
*Return n
End Function
Теперь все будет работать. Но я бы реализовал это по другому, без связанных типов, через массив:
Const HEAD * *= 1
Const LEGS * *= 2
Const BELLY * = 3
Const TORSO * = 4
Type TNPC
* *Field health# [4]
* *Field name
End Type
n.TNPC = New TNPC
n \ health [ HEAD ] = 25
|
(Offline)
|
|
24.01.2006, 12:15
|
#5
|
Бывалый
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений (для 5 пользователей)
|
А как найти меньшее и среднее значения
|
(Offline)
|
|
24.01.2006, 14:33
|
#6
|
|
перебрать все значения
|
|
|
24.01.2006, 15:02
|
#7
|
Оператор ЭВМ
Регистрация: 12.01.2006
Сообщений: 21
Написано 0 полезных сообщений (для 0 пользователей)
|
Покажи, как ты думаешь делать и что не получается, тогда помогу.
|
(Offline)
|
|
26.01.2006, 11:04
|
#8
|
Бывалый
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений (для 5 пользователей)
|
Originally posted by AsmLover@Jan 24 2006, 06:02 PM
Покажи, как ты думаешь делать и что не получается, тогда помогу.
|
Делаю систему боя двух и более NPC, в начале боя каждая нпс определяет слабые части тела врага и определяет свой опыт удара по этим частям, и во время боя должна наносить удары по нескольким "удачным" для нее частям тела врага.
например :
враг видит что игрок ванен в ногу и например у игрока еще на голове нет шлема. вражеская нпс определяет что он будет бить по этим частям тела и ищет среди своих параметров опыта куда еще он может наносить удары.
;- Параметры тела
Global tAll=0;Общее
Global tHead=1
Global tHand=2
Global tBody=3
Global tLegs=4
;- Параметры
Global tStrength=1;Сила
Global tDexterity=2;Ловкость
Type tNPC
Field tName$
Field tHP#[4];Здоровье тела
Field tArmor#[4];Броня на теле
Field tExpWar#[4];Опыт нанесения ударов по телу
End Type
Function NewNPC.tNPC(name$,nHP1#,nHP2#,nHP3#,nHP4# ,nAP1#,nAP2#,nAP3#,nAP4#, nEW1#,nEW2#,nEW3#,nEW4# )
;задаем параметры нового игрока
Local n.tNPC=New tNPC
n\tname=name
;Заполняем шкалу здоровья
n\tHP[tHead]=nhp1
n\tHP[tHand]=nhp2
n\tHP[tBody]=nhp3
n\tHP[tLegs]=nhp4
n\tHP[tAll]=(nhp1+nhp2+nhp3+nhp4)/4/1.2
;Заполняем шкалу Брони(одежды)
n\tArmor[tHead]=nap1
n\tArmor[tHand]=nap2
n\tArmor[tBody]=nap3
n\tArmor[tLegs]=nap4
n\tArmor[tAll]=(nap1+nap2+nap3+nap4)/4/1.2
;Заполняем шкалу Опыта нанесения ударов
n\tExpWar[tHead]=new1
n\tExpWar[tHand]=new2
n\tExpWar[Body]=new3
n\tExpWar[tLegs]=new4
n\tExpWar[tAll]=(new1+new2+new3+new4)/4/1.2
Return n
End Function
Dim nt(2)
Dim p1(2,3)
Dim minn#(2,2);первое число индекс врага / второе: 1-текущее значение 2-Самое слабое
Graphics3D 640,480,32,2
SetFont LoadFont("arial cyr",16)
N1.tnpc=NewNPC("Player1",12,23,14,8, 4,0,2,6, 4,2,1,3)
N2.tnpc=NewNPC("ENEMY",8,12,23,4, 3,4,2,1, 3,4,1,2 )
Real_WAR
While Not KeyHit(1)
Text 20,20, n1\tname
Text 50,10,minn(1,2)
Text 50,30,minn(2,2)
Flip
Wend
End
Function Real_WAR()
minn(1,2)=9999
minn(2,2)=9999
;Определяем самые слабые чати тела соперника
For i=1 To 3
;Local i=1
;!!!!!!!!!!!!!!!!!!!!!!!!! Только Здесь ОШИБКА Какаято непойму, к массиву придерается
minn(1,1)=n1\thp[i];+n1\tArmor[i]
minn(2,1)=n2\thp[i];+n2\tArmor[i]
If minn(1,1)<minn(1,2) minn(1,2)=minn(1,1)
If minn(2,1)<minn(2,2) minn(2,2)=minn(2,1)
Next
End Function
Круто да
----------------------------------------
и еще вопросики
1/аказывается в типах можно делать так field health[3] ето хорошо А можно какнибуть так field health[3,4], ну чтобы не только 3 переменные запихать а у каждой чтобы еще по несколько было (как в массиве)
2/у меня все элементы типа содержат Field nName$ (именя), и другие параметры, я узнаю именя например 1 и 30 элементов и потом в отдельной функции должно проиходить вычисления только между этими двумя (или более) элементами, это можно сделать какнибудь без поиска этих элементов каждый цикл
For NPC.tNpc = Each tNPC
if npc.nname=[Имя элемента]
next
|
(Offline)
|
|
06.02.2006, 14:56
|
#9
|
Бывалый
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений (для 5 пользователей)
|
Чаво ни кого нету то
|
(Offline)
|
|
06.02.2006, 15:21
|
#10
|
Знающий
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений (для 0 пользователей)
|
акима а ты что делаеш? поделись=)
|
(Offline)
|
|
07.02.2006, 14:08
|
#11
|
Бывалый
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений (для 5 пользователей)
|
я пытаюсь делать RPG типа (EVIL ISLANDS, корсары, beyond oasis на сеге), но пока неочень то получается.
попозже думаю замутить приглашение желающих и умеющих в группу для создания етой игры. а в этой теме я спрашиваю про данные и делаю систему боя к игре
ЗЫ: или может сейчас замутить. ващи мнения. немного скетчей нарисовано и моделей смоделировано
|
(Offline)
|
|
07.02.2006, 15:13
|
#12
|
Знающий
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений (для 0 пользователей)
|
замути конечно сейчас! а насчёт корсаров ты прав!обожаю корсары!
|
(Offline)
|
|
09.02.2006, 15:39
|
#14
|
Бывалый
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений (для 5 пользователей)
|
Опять какието проблемы с типами, заполняю тип вроде все впорядке, а когда запрашиваю из него информацию нечего не происходит. Помогите а.
Фаил удален . А в следующем сообщении прикреплен файл с о всеми объяснениями
|
(Offline)
|
|
09.02.2006, 18:36
|
#15
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ничего не понял в коде - читается информация из фацлы и обрабатвается ужасным алгоритмом. Расставь отстыпы и прочее. И вообще - напиши, что конкретно ты хочшь от файла?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:53.
|