篇文章属于'节目'
昨天有计时器的问题得到解决,不知何故我现在可以奉献的场景。 在这里,我想,但让我们不容易去上野,花方案整件事几次相当Bedenkminuten微型
第一次我一直在寻找一个可爱的地图编辑器和平铺发现。 是用Java编写并运行这样好的也认真参与任何操作系统。 我也觉得很方便,卡都存储在XML和可分配在地图编辑器中的对象及其属性。
后者是当它作为一个记事本适合例如有用。 事实可能是这样,即使你设计的卡丢失其内容。 他们的目标或传送点心灵传输领域的优秀的东西...:)
在国内,我将节省大约3二维数组现场。 一楼砖来。 为什么? 我注意到在机器人三,它看起来不很漂亮,如果在森林wegätzt墙,因为当时有一个在森林中的白色瓷砖。 这将是很好,如果有会出现在我的帐户棕色森林土。 这正是让我做我的第一个数组(我打电话,让我一层0次微型)。
第一层将包含所有其他非全国人大游戏对象。 并在第2层的屋顶,然后一切可以运行在长期查理。 查理你在我的帐户只在一所房子,是不是引起更多的二层和我们有在机器人天台游戏同样的效果:)
NPC和所有对象都存储在一个列表中的每个。 然后这些不sooooo长时间延迟,但我必须有一个在所有可能的多个对象和相同的领域。 由于这种情况的话,我相信,只要球员抛弃的对象。 或者是因为我错过了什么?
目前,我已经为每个对象自己的巴纽兼容,但不幸的是各种瓷砖没有那么大。 所以这里要再谈一个单一图像获得完全tileset。 一个或两个转变的对象基类,这个小问题也将得到解决。
我希望的时刻,我仍然在本周内创造这一切,因为这样我可以放过再次在GUI蒸汽;)
2009年2月8日
因为有爱一切都运作得很成功,我抄了计时器,并作为预防措施交换全浮动整数变量。 这带来了不错的速度撞上我的动画爆裂和完美。 但我只是想利用液态对象运动和一切开始打勾。 所以,一切转换回浮动。 现在他们更流畅,但他希望是愚蠢又哑,20医科损失:(
,必须有更好的... ...我们将目光
2009年2月7日
没有在他们的新家园辛格尔顿(屏幕,定时器,图像)的最基本的功能杂音消失。 游戏类还需要慢慢形成:)
下一步是为游戏元素对象的基类。 首先,我想看看它是如何在野生环境的行为,因为它必须关心任何动画也。 没有爱,我应该关心自己,所以这一次*笑*
我已经在爱情GORC每个对象实例的版本已发现自己的实例图片...这当然是没有必要的资源。 这我得考虑,以确保图像加载一次,并会在任何其他“存储从缓存”花时间。
因此,我站出来...尽管冷战思维过程非常缓慢和微型
2009年2月6日
前一段我还不敢肯定。 但是,没有我刚回答贺克的评论,有Ð(再次),而非由我对变量和父类函数的继承他们的想法不感兴趣小子。
我承认我是来真的不知道我应该做的事情如“虚拟”和“保护”。 但是,如果我为:
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| void draw ( uint x , uint y ) { ... } ... } class Animation : Image { ... void draw ( ) { draw ( 1 , 1 ) ; } ... } 一流的 图像(... 无效画(uint十,uint y)的(...) ...)动画 类 :图像(... 无效画()(画(1,1);))... |
的确,为什么要抱怨上帝的意志是D编译器,类不绘制动画uint(“uint)函数? 我的理解是,他们仍然应该继承自Image类,对不对? 好,感谢谷歌,我是这样看:
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| 一流形象
(
...
uint x , uint y ) 无效画(uint uint 的x,y)
(
...
)
...
)
Image 动画 类 :图像
(
...
draw ; 别名形象。 画 绘制;
无效画()
(
, 1 ) ;画(1,1);
)
...
) |
唷! 慢慢地,我真的想不处理谁在他睡觉的面向对象的原则,应该允许D的手指:(
所以...我买的C + +,这涉及我的无知有点亲切,并尝试了解它;)
2009年2月5日
在这里我的旧笔记本电脑GORC运行得太慢。 这主要是因为情感的使用OpenGL。 一个2D游戏引擎SDL的就足够完美。 眼镜。 但是,现在怎么办?
其实一个非常好的时机GORC在一个“真正的”编程语言和重写相同使用SDL库。 最后,我需要不超过SDL的,SDL_mixer和SDL_image。 后来还是南湖为脚本,但在那之前还有时间...
在短期来这里列出四种语言:C语言,C + +,基本的,免费数字火星四,后者我一直想闻一多一点密切合作。 我选择的图书馆的支持。
C和C + +不喜欢我写的太多了。 几乎可以被编译的一切,我只是爱的语法:)
免费基本就像一个快速的基本语法C。 可以编译,但可惜只适用于Windows和Linux。
D将可能是“更好地比C + +”。 在何种程度上影响像GORC项目的容易,不知道。 编制设计扩频,非常感谢容易在C / C + +。 因为我还从来没有真正的管理,这让我的程序编译通过。/配置&作出。 只是太贵了所有*笑*
在这里,一次小的方向一眼D辑:
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| . sdl ; import tango. io . Console ; void main ( ) { try { DerelictSDL. load ( ) ; } catch ( Exception e ) { Cout ( "Could not load the SDL shared library. \n " ) ; return ; } SDL_Init ( SDL_INIT_VIDEO ) ; SDL_SetVideoMode ( 640 , 348 , 24 , SDL_SWSURFACE ) ; SDL_WM_SetCaption ( "GORC" , null ) ; mainLoop : while ( true ) { SDL_Event event ; while ( SDL_PollEvent ( & event ) ) { switch ( event. type ) { case SDL_QUIT : break mainLoop ; default : break ; } } SDL_Delay ( 10 ) ; } Cout ( "Oki Dokili. \n " ) ; SDL_Quit ( ) ; DerelictSDL. unload ( ) ; } 进口废弃。sdl的。sdl的; 进口探戈。 印务局。 控制台; 无效的主要()(尝试 (DerelictSDL. 负载 ();) 赶上 (例外五)(法院(“ 无法加载SDL的共享库。\ ñ”); 返回;)SDL_Init(SDL_INIT_VIDEO); SDL_SetVideoMode(640,348,24,SDL_SWSURFACE); SDL_WM_SetCaption(GORC“, 空); mainloop: 虽然 (真)(SDL_Event事件而 (SDL_PollEvent(&事件))(开关 (事件 。 型)( 案件 SDL_QUIT: 打破 mainloop; 默认: 打破;))SDL_Delay(10);)法院(“冲电气 Dokili。\ ñ”); SDL_QUIT(); DerelictSDL。 卸载 ();) |
所以? 我买了什么呢?
2009年2月3日
我今天一整天的死看* *摇头
菜单和对话框框架已经没有任何问题制定,确定...我们仍然能够迅速完成的主菜单,然后下班后。 尼克斯适应那里...不知怎的,无论是菜单项没有在窗口或窗口太大。 但是你可以去当一个错误的框架的一部分正是8 × 10像素,是一个大的字体大小是相同的信? 简单的数学,但不适合的东西!
我实际上只是几个字母的字体资源油漆错过一个框架,看到错误。 在此之前,我有我的源可能已经读过没有结果校正一千倍。 对于位图字体(当然我不知道)爱插入标准的功能是一个新兴的一两个字母之间的像素。 幸好还有一个功能,由于我可以离开这个愚蠢的像素;)
好吧,我现在已经有足够的节目。 菜单可以现在终于等到今天,谁是18岁,是我已经没有强有力的庆祝活动。
恭喜你,兄弟!
2009年1月24日
前言:我发现我GORC我对机器人论坛游戏线程现在被DevBlog滥用。 这时候,我现在工作的人反对,我的进步,在这个博客帖子...其实,他们也属于思想;)
所以...我用了上周塞进类的所有游戏元素。 一个场景的内容是没有一个二维数组较长,但在两种洛表。 其中一个机器人,那么也许所有其他的NPC这里来。 而在其他表中插入所有(墙壁其他元素,黄金等)。
该程序的目的是为了使游戏的逻辑控制。 而是一个长期的if - then - else块现在把一个类的实例在其特定对象的所有逻辑。 一个例子:
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| "Gold" , Object )黄金类=(“金”,对象)
"images/gold-0.png" )黄金love.graphics.newImage图像=(“images/gold-0.png”)
, 0 )金像:setCenter(0,0)
"sounds/gold.wav" )金声love.audio.newSound =(“声音 / gold.wav”)
x, y, params )黄金init 函数:( 的x,y,params)
self.super:初始化(的x,y)
self.ani =金像
结束
obj ) 功能黄金:canEnter(obj的)
-可球员签订的唯一
obj ) then return false end 如果不是球员:由(obj的), 则返回false结束
返回true
结束
obj ) 功能黄金:onEntered(obj的)
obj ) then return end 如果不是球员:由(obj的), 然后返回结束
自: 删除 ()
spieler.gold spieler.gold + 1 =
love.audio.play(金声)
结束 |
确定。 一个收藏对象现在没有真正的脚本技术的挑战。 但如何对某事更复杂?
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| "Isolator" , Moving )绝缘子=班(“绝缘体”,移动)
love.graphics.newImage ( "images/isolator-0.png" ) , 16 , 12 , 0.1 , 0 )隔离图像= love.graphics.newAnimation(love.graphics.newImage(“images/isolator-0.png”),16,12,0.1,0)
, 6 )隔离器的图像:setCenter(8,6)
x, y, params )绝缘子功能:初始化(的x,y,params)
self.super:初始化(的x,y)
self.ani =绝缘体形象
self.speed = spieler.speed
结束
obj )绝缘子功能:canEnter(obj 的)
当地 dx和dy
-可球员签订的唯一
obj ) then return false end 如果不是球员:由(obj的), 则返回false结束
-绝缘体动作了,
-我们无法进入,或在它的方向去
-当我们漫步否则
then return false end 如:自isMoving(), 然后返回false结束
dx的= self.X - obj.x
颐= self.y - obj.y
dx, dy ) 回报:自canMoveTo(dx和dy)
结束
dx, dy )绝缘子功能:canMoveTo(dx 和dy)
Szenen:current ( ) :get ( self.x + dx, self.y + dy ) 本地外地=场景:电流():获取(self.X + dx的,self.y + 镝)
0 then # 如果外地== 0, 则
16 , dy * 12 )自:setTarget(dx的12 * 16 *镝)
返回true
结束
( feld ) do 因为我,能量场) 在对 ( 做
e.obj ) and not Barbwire:made ( e.obj ) then 如果不是绝缘体:制造(e.obj), 而不是巴巴尔:由(e.obj), 那么
返回false
其他
dx, dy ) then 如果 e.obj:canMoveTo(dx)上 ,然后镝
16 , dy * 12 )自:setTarget(dx的12 * 16 *镝)
返回true
结束
结束
结束
返回false
结束 |
另一侧的好处是现在有能力在同一领域的几个项目。 当一个人进入了第一次现场,通常只有一个字段对象。 但是,谁发挥的机器人游戏已经知道,在某些时候已经到了清理库存情况。 多田! 有什么能比任何事情是不是在目前需要更好的,只是躺在一个堆? 当再次需要它,只需运行在外地和自动将你收集一切。
可惜我不能真的很高兴我的小“成就”,因为它的成本框架:(只在墙上的60医科1000只以下的场景第50次把它丢在边界仍持有(该介绍300-400对象),但一旦你把他们周围的绝缘体,你能再次消失高达10帧。
不过有一个或其他的想法我怎么可以限制损失。 但长远而言,我会更好的东西找一个表现之解决方案。 什么复杂,但决不是对象的快速中央脚本...
现在我想,但不必担心它,我曾在GUI思维GORC widment。 最后,比赛将是菜单,消息框,上面所有的库存。 我们会看到,夜晚才刚刚开始微型
2009年1月22日
我有几天开始在GORC流体运动,并试图安装一个小的代码更容易做出。 由于如查理和机器人是针织非常相似,没有什么比两个对象也得出同样的功能(移动,使用...)让。 它出来的是这样的:
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| movable_create 函数 ()
=(男)
x = 0时
我= 0
返回米
结束
m, x, y ) movable_setPosition 功能 (米中,x,y)的
x = x
我= Ÿ
结束
-例子:
球员= movable_create()
, 2 ) movable_setPosition(球员,2,2) |
一切都进行得还算顺利。 但是,刚才我在想。 岂不是很有意思,建立整个对象? 但是,我们如何在南湖? 经过大量的使用Google和摆弄,我得出以下结论:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | Class ( baseClass ) local new_class = { } local class_mt = { __index = new_class } function new_class:new ( self, ... ) local newinst = { } setmetatable ( newinst, class_mt ) newinst:init ( ) return newinst end if nil ~ = baseClass then setmetatable ( new_class, { __index = baseClass, __call = function ( self,... ) return self:new ( ... ) end } ) end function new_class:class ( ) return new_class end function new_class:super ( ) return baseClass end function new_class:init ( ) end function new_class:is ( theClass ) local b_isa = false local cur_class = new_class while ( nil ~ = cur_class ) and ( false == b_isa ) do if cur_class == theClass then b_isa = true else cur_class = cur_class:superClass ( ) end end return b_isa end return new_class end - 功能类(BaseClass的) 地方 =() 当地 new_class class_mt class.lua =() 函数 new_class new_class __index =新的(自我,...) 当地 =()Newin setmetatable(Newin,class_mt)Newin:初始化() Newin 返回结束如果 〜= 零然后 自我,setmetatable BaseClass的(new_class,__index =(BaseClass的,__call = 功能 (...) 返回自己:新(...) 完)) 结束函数 new_class:类() 返回结束 new_class 功能 new_class:超() 返回结束 new_class BaseClass的功能 :初始化() 函数结束 new_class:是(theClass) 当地 b_isa = 虚假当地 = cur_class new_class 而(零 〜= cur_class) 和(假 == b_isa) 做,如果 cur_class == theClass = true,则 b_isa 其他 cur_class = cur_class:父类() 返回结束结束结束结束返回 b_isa new_class |
该文件在它自己的最好,如“class.lua保存。 在行动上看到整体来说,我们有:
一
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| "class.lua" ) -- Standard Objekt Object = Class ( nil ) function Object:init ( ) -- Gridposition self.x = 0 self.y = 0 -- Sprite / Animation self.ani = 0 end function Object:setPosition ( x, y ) self.x = x self.y = y end -- Bewegliche Objekte Moveable = Class ( Object ) function Moveable:init ( ) self.super ( ) :init ( ) -- Ziel Gridposition self.nx = 0 self.ny = 0 -- Bewegungsrichtung (entfernen!) self.dir = 0 self.ani_x = 0 self.ani_y = 0 -- Felder pro Sekunde self.speed = 4 self.last_update = 0 end function Moveable:draw ( ) local x, y x = ( self.x - 1 ) * 16 + self.ani_x y = self.y * 12 + self.ani_y love.graphics.draw ( self.ani, x, y ) end ... -- Beispiel: mauer = Objekt ( ) mauer:setPosition ( 10 , 15 ) spieler = Movable ( ) spieler:setPosition ( 2 , 2 ) love.filesystem。 要求 (“class.lua”) -标准对象类对象=(无)函数对象:的init() - Gridposition self.X self.y = 0 = 0 -雪碧/动画 self.ani = 0 结束函数对象:setPosition(的x,y)= x的 self.X self.y = Y 端 -可移动可移动的物体 =类(对象)可移动的功能 :初始化()self.super():初始化() -目标Gridposition self.nx self.ny = 0 = 0 -消除运动方向(!)self.dir self.ani_x = 0 = 0 = 0 self.ani_y - = 领域每秒 self.speed self.last_update = 4 0 结束函数移动式:绘制() 本地X,x的y =(self.X - 1)* 16 +为y = self.ani_x self.y * 12 + self.ani_y love.graphics.draw(self.ani中,x,y)的 结束 ... -例如:墙=对象()壁:setPosition(10,15)移动球员=()球员:setPosition(2,2) |
现在问我,但不是所有这一切到底如何运作;)对我来说这是一。 谁是有兴趣的运作仍然可以有这么聪明阅读以下网页:
2009年1月19日
想象一下,在她刚刚为iPhone小游戏前你在德国写的。 但是,因为你要呼吁尽可能多的观众,应该有一个英文版本。 但你如何唱好这个问题? 有一次,我GOOGLE了一下。
在您的Xcode项目目录您提交给两个目录:“de.lproj”和“en.lproj”
现在,它适合你的项目使用添加- >“新建文件... - >”其他- >“文件弦乐两个新的文件添加Localizable.strings”。 一个在“de.lproj”和其他在“en.lproj”目录。
您的项目的看法应该是这样的:
我有时作为一个主菜单为例,代码仍然是这样的:
一
2
3
4
5
6
7
| MenuItemFont itemFromString : @ "Starte Spiel" target : self selector : @selector ( startGame : ) ] ; MenuItem * help = [ MenuItemFont itemFromString : @ "Hilfe" target : self selector : @selector ( help : ) ] ;开始菜单项* = [MenuItemFont itemFromString:@“ 开始游戏” 的目标:自我选择:@ 选择开始游戏(:)];菜单项*帮助= [MenuItemFont itemFromString:@“ 帮助” 目标:自我选择:@ 选择 (帮助:)] ; |
字符串“开始游戏”和“帮助取代”我们的NSLocalizedString()函数。StartGameKey和HelpKey给我们什么字符串现在想拥有该机构说,翻译的过程中,;)
一
2
3
4
5
6
7
8
9
| 菜单项*开始=
[MenuItemFont itemFromString:
, @ "" ) NSLocalizedString(@“StartGameKey”,@“”)
@selector ( startGame : ) ] ; 目标:自我选择:@ 选择 (开始游戏:)];
*菜单项帮助=
[MenuItemFont itemFromString:
, @ "" ) NSLocalizedString(@“HelpKey”,@“”)
@selector ( help : ) ] ; 目标:自我选择:@ 选择 (帮助:)]; |
即使我们两个Localizable.strings编辑文件,对这一方案得到我们后来翻译的字符串。
德国:
一
2
| "Starte Spiel" ; “StartGameKey”=“开始游戏”;
"Hilfe" ; “HelpKey”=“帮助”; |
英文:
一
2
| "Start Game" ; “StartGameKey”=“开始游戏”;
"Help" ; “HelpKey”=“帮助”; |
我们曾经和已经交付给iPhone的最佳语言翻译:)应设置为一个语言,我们将不提供翻译似乎是采取了什么是英语翻译在大多数情况下,完全确定。
2009年1月13日
虽然我仍然试图找出如何呈现在纹理的OpenGL ES,这是问题出现了如何设计界面?
这里有足够多的一次典型的例子:
或者,正如我已经看到了关于我的小精灵冒险:
不知怎的,这将是对我很重要,但我们的方式提供给最终整合iPhone一些。 减永久可见按钮,减少不必要的三维视图,并最终将成为不良,稍大的手指。 议案规定的领域内的三维视图,以党的drag'n'drop改变党的成立,等等一个非常粗略的结构可能是这样的:
你怎么看的呢? 或者你可能有更好的建议?
2009年1月10日
先前的文章