DarkBASIC 编程/2D 游戏编程第 2 部分
好的,我们已经制作了 Pong,下一步是制作一个 Breakout 游戏。仅仅给你游戏的源代码证明你并没有自己编写 Pong 游戏。所以我要做的是让你自己编写 Breakout 游戏,我会给出一些指导性示例。在这次快速的 Breakout 游戏练习之后,我将讨论多媒体!
碰撞
如果 精灵碰撞(球拍, 球) = 1 那么 反弹球 = 1
让球反弹的可能解决方案:S
- 设置一个名为 ballmovex 的变量,将它的值设置为随机的 1 或 0。- 如果球撞击 0,让它向左移动,如果撞击 1,让它向右移动。- 对名为 ballmovey 的变量执行相同的操作,但在这-种情况下是向上或向下移动。
设置方块的可能解决方案
- 设置一个数组,它包含方块的 x 位置和 y 位置。然后再设置一个数组来判断方块是否被击中,如果方块被击中,它的值将等于 1 或 true,然后使用条件语句 (if 和 then) 来执行破坏方块的操作。
如果 精灵碰撞(球拍, 撞击方块(方块编号)) = 1 那么 销毁方块 = 1
如果 销毁方块 = 1
brickx(bricknum) = -1 bricky(bricknum) = -1
结束 if
需要记住的事情
Remember you need a do loop to accept advanced input such as inkey$(), returnkey(), etc.
我已经给出了许多关于如何完成 Breakout 游戏的建议,希望这能很轻松地完成,不会出现任何问题。如果你遇到 “这是什么” 的情况,我建议你访问 DarkBASIC 官方主页上的代码库:http://www.thegamecreators.com,它包含了所有 DarkBASIC 编码人员需要的东西。
Multimedia In DarkBASIC - Audio
很少有人会说他们不喜欢音乐,事实上大多数人都喜欢在游戏中听到环境音乐,我知道我喜歡!上面,我使用了一些奇怪的命令,播放声音、播放音乐、加载音乐、播放音乐。好吧,DarkBASIC 有三种音频支持,MP3、Wave 和 Midi。加载音乐非常简单,声音的工作方式也相同。所以我要给你一个代码示例,你提供声音,我提供代码!
音频代码示例
Rem Audio Example `Load audio load sound "mysound.wav",1 load music "mymusic.mid",1 `Play audio once play sound 1 `Loop music loop music 1 `wait key wait key stop music 1 loop sound 1
那么结尾的数字是什么?还记得图像吗?好吧,这个数字是给定的一个数字 ID。记住音频的路径和扩展名!
Multimedia in DarkBASIC - Animations
这可能是我最后一篇关于多媒体的文章,除非有人写一篇关于 dll 的文章,我不会写,因为我使用的是旧版本的 DarkBASIC。
目前,动画不包括像马里奥走路之类的动画,但它们包括像动画 GIF(图形交换格式)和 AVI(音频视频交织)之类的动画。到目前为止,我相信动画有两种格式 .gif 和 .avi,如果有其他格式,请告诉我。动画可以用于游戏结束画面,甚至可能有一些像真人快打一样的终结技!
代码示例
load animation "animation1.avi",1 play animation 1 wait key stop animation 1 load animation "animation2.gif",2 play animation 2 loop animation 2
- 请帮助完成这本书,以任何可能的方式贡献!-
________________________________________________________________
这关于 2D 游戏。这个维基帮助我成为了今天的我。不,我不是 DBTutor,但我将贡献。我是 IRON PROGRAMMER!如果你有任何问题,请在 DarkBASIC 论坛上与我交谈。
我挑战你创建一个 2D 格斗游戏。这些很简单。这里有一个示例
''cls rgb(150,150,150) load image "Sumostein.bmp", 1 sprite 1, sprite1xpos, sprite1ypos, 1 sprite1xpos = 300 sprite1ypos = 300 load image "Sumocula.bmp", 2 sprite 2, sprite2xpos, sprite2ypos, 2 load image "Sumocula Punch.bmp", 3 sprite 3, sprite2xpos, sprite2ypos, 3 hide sprite 3 load image "Sumostein Punch.bmp", 4 sprite 4, sprite1xpos, sprite1ypos, 4 hide sprite 4 sprite2xpos = 300 sprite2ypos = 300 playeronelives = 3 playertwolives = 3 mainloop: do cls rgb(150,150,150) sprite 1, sprite1xpos, sprite1ypos, 1 sprite 2, sprite2xpos, sprite2ypos, 2 sprite 3, sprite2xpos, sprite2ypos, 3 sprite 4, sprite1xpos, sprite1ypos, 4 hide sprite 3 if upkey() = 1 then sprite1ypos = sprite1ypos -5 if downkey() = 1 then sprite1ypos = sprite1ypos +5 if leftkey() = 1 then sprite1xpos = sprite1xpos -5 if rightkey() = 1 then sprite1xpos = sprite1xpos +5 if controlkey() = 1 then gosub sumosteinpunch if inkey$() = "w" then sprite2ypos = sprite2ypos -5 if inkey$() = "s" then sprite2ypos = sprite2ypos +5 if inkey$() = "a" then sprite2xpos = sprite2xpos -5 if inkey$() = "d" then sprite2xpos = sprite2xpos +5 if inkey$() = "x" then gosub sumoculapunch if spacekey() = 1 then end if sprite1xpos =<0 then sprite1xpos = sprite1xpos +5 if sprite1xpos =>550 then sprite1xpos = sprite1xpos -5 if sprite1ypos =<0 then sprite1ypos = sprite1ypos +5 if sprite1ypos =>350 then sprite1ypos = sprite1ypos -5 if sprite2xpos =<0 then sprite2xpos = sprite2xpos +5 if sprite2xpos =>550 then sprite2xpos = sprite2xpos -5 if sprite2ypos =<0 then sprite2ypos = sprite2ypos +5 if sprite2ypos =>350 then sprite2ypos = sprite2ypos -5 loop sumoculapunch: hide sprite 2 show sprite 3 wait 250 if sprite collision(3, 1) = 1 playeronelives = playeronelives -1 if playeronelives = 0 delete sprite 1 end endif endif hide sprite 3 show sprite 2 gosub mainloop sumosteinpunch: hide sprite 1 show sprite 4 wait 250 if sprite collision(4, 2) = 1 playertwolives = playertwolives -1 if playertwolives = 0 delete sprite 2 end endif endif hide sprite 4 show sprite 1 gosub mainloop''
这是一个简单的 2D 多人格斗游戏的格式。请注意,我巧妙地没有提供媒体!哈哈哈哈!现在开始编程吧!
->>3D 编程<<- 哒哒哒! (我不是 DBTutor,也不是 IRONPROGRAMMER,我是 gluon,你可以在 DexOS 论坛上找到我)
第一个示例
一个可控的立方体
SYNC RATE 60 MAKE OBJECT CUBE 1,1 DO if leftkey()=1 then YROTATE OBJECT 1,OBJECT ANGLE Y(1)-2 if rightkey()=1 then YROTATE OBJECT 1,OBJECT ANGLE Y(1)+2 if upkey()=1 then XROTATE OBJECT 1,OBJECT ANGLE X(1)-2 if downkey()=1 then XROTATE OBJECT 1,OBJECT ANGLE X(1)+2 SYNC LOOP END
我们可以说 SPHERE 等等,而不是 MAKE OBJECT CUBE。
一个纹理物体
sync on hide mouse make object cube 1,20 load image "car.jpg",1 texture object 1,1,1 do sync loop
移动物体
Sync on sync rate 40 hide mouse make object cube 1,10 do if rightkey()=1 then y=wrapvalue(y+1) if leftkey()=1 then y=wrapvalue(y-1) if upkey()=1 then move object 1,1 if downkey()=1 then move object 1,-1 yrotate object 1,y sync loop