设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3108|回复: 11
打印 上一主题 下一主题

关于利用RMXP来做贪吃蛇游戏的构思

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-5-10
帖子
35
跳转到指定楼层
1
发表于 2009-5-30 14:54:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
关于利用RMXP来做贪吃蛇游戏的构思

最近比较热衷RMXP,所以无聊做了点小游戏。但是没有尝试过RPG以外游戏的制作

昨天无聊想到了一个用事件来做贪吃蛇的方法

首先就是四周的墙壁,用事件插入 GAMEOVER和游戏结束

然后就是吃的东西。吃的东西则是加入队友,并且后面跟随。脚本的话在素材区有我就不发了

唯一我弄不懂的就是如何让吃的东西随机出现。这点我目前还搞不懂。

以上了。。勿喷。。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
2
发表于 2009-5-30 16:02:18 | 只看该作者
变量操作1 = 随机数(0 ,地图的长)
变量操作2 = 随机数(0,地图的宽)
然后事件中写上 设置事件位置变量1变量2即可!
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
3
发表于 2009-5-30 17:26:16 | 只看该作者
那你是如何解决 队友限制问题的?不是只有4个队员吗?
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-2-28
帖子
152
4
发表于 2009-5-30 19:11:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2009-5-30 20:27:21 | 只看该作者
随机出现东西不是很简单么…… - -

关键是碰到队友这一点。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
54 小时
注册时间
2008-12-24
帖子
345
6
发表于 2009-5-30 20:56:25 | 只看该作者
用 坐标判定
本人在编写 重装机兵的乘降脚本中遇见此问题
就是在角色跟随脚本中 无第几人的xy朝向等 问了好几天才有答案
$队伍人数 = (你想要的效果) 本人认为此处 应该是 4 然后在事件中带入 $队伍人数 += 1
你看如何

  1. ###############################################################################
  2. #●重装原版人物跟随 改动过可识别每个角色的xy朝向等
  3. ###############################################################################
  4. module Train_Actor
  5. #是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果TRANSPARENT_SWITCHES_INDEX
  6. #开关打开,跟随的人物就消失了(其实只是变成透明而已)
  7. TRANSPARENT_SWITCH = false
  8. TRANSPARENT_SWITCHES_INDEX = 20
  9. #举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。
  10. #Input::DOWN = 2
  11. #Input::LEFT = 4
  12. #Input::RIGHT = 6
  13. #Input::UP = 6
  14. DOWN_LEFT = 1
  15. DOWN_RIGHT = 3
  16. UP_LEFT = 7
  17. UP_RIGHT = 9
  18. JUMP = 5
  19. class Game_Party_Actor < Game_Character
  20. def initialize
  21. super()
  22. @through = true
  23. end
  24. def setup(actor)
  25. # キャラクターのファイル名と色相を設定
  26. if actor != nil
  27. @character_name = actor.character_name
  28. @character_hue = actor.character_hue
  29. else
  30. @character_name = ""
  31. @character_hue = 0
  32. end
  33. # 不透明度と合成方法を初期化
  34. @opacity = 255
  35. @blend_type = 0
  36. end
  37. def screen_z(height = 0)
  38. if $game_player.x == @x and $game_player.y == @y
  39. return $game_player.screen_z(height) - 1
  40. end
  41. super(height)
  42. end
  43. #--------------------------------------------------------------------------
  44. # ● 下に移動
  45. # turn_enabled : その場での向き変更を許可するフラグ
  46. #--------------------------------------------------------------------------
  47. def move_down(turn_enabled = true)
  48. # 下を向く
  49. if turn_enabled
  50. turn_down
  51. end
  52. # 通行可能な場合
  53. if passable?(@x, @y, Input::DOWN)
  54. # 下を向く
  55. turn_down
  56. # 座標を更新
  57. @y += 1
  58. end
  59. end
  60. #--------------------------------------------------------------------------
  61. # ● 左に移動
  62. # turn_enabled : その場での向き変更を許可するフラグ
  63. #--------------------------------------------------------------------------
  64. def move_left(turn_enabled = true)
  65. # 左を向く
  66. if turn_enabled
  67. turn_left
  68. end
  69. # 通行可能な場合
  70. if passable?(@x, @y, Input::LEFT)
  71. # 左を向く
  72. turn_left
  73. # 座標を更新
  74. @x -= 1
  75. end
  76. end
  77. #--------------------------------------------------------------------------
  78. # ● 右に移動
  79. # turn_enabled : その場での向き変更を許可するフラグ
  80. #--------------------------------------------------------------------------
  81. def move_right(turn_enabled = true)
  82. # 右を向く
  83. if turn_enabled
  84. turn_right
  85. end
  86. # 通行可能な場合
  87. if passable?(@x, @y, Input::RIGHT)
  88. # 右を向く
  89. turn_right
  90. # 座標を更新
  91. @x += 1
  92. end
  93. end
  94. #--------------------------------------------------------------------------
  95. # ● 上に移動
  96. # turn_enabled : その場での向き変更を許可するフラグ
  97. #--------------------------------------------------------------------------
  98. def move_up(turn_enabled = true)
  99. # 上を向く
  100. if turn_enabled
  101. turn_up
  102. end
  103. # 通行可能な場合
  104. if passable?(@x, @y, Input::UP)
  105. # 上を向く
  106. turn_up
  107. # 座標を更新
  108. @y -= 1
  109. end
  110. end
  111. #--------------------------------------------------------------------------
  112. # ● 左下に移動
  113. #--------------------------------------------------------------------------
  114. def move_lower_left
  115. # 向き固定でない場合
  116. unless @direction_fix
  117. # 右向きだった場合は左を、上向きだった場合は下を向く
  118. @direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
  119. end
  120. # 下→左、左→下 のどちらかのコースが通行可能な場合
  121. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
  122. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
  123. # 座標を更新
  124. @x -= 1
  125. @y += 1
  126. end
  127. end
  128. #--------------------------------------------------------------------------
  129. # ● 右下に移動
  130. #--------------------------------------------------------------------------
  131. def move_lower_right
  132. # 向き固定でない場合
  133. unless @direction_fix
  134. # 左向きだった場合は右を、上向きだった場合は下を向く
  135. @direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
  136. end
  137. # 下→右、右→下 のどちらかのコースが通行可能な場合
  138. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
  139. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
  140. # 座標を更新
  141. @x += 1
  142. @y += 1
  143. end
  144. end
  145. #--------------------------------------------------------------------------
  146. # ● 左上に移動
  147. #--------------------------------------------------------------------------
  148. def move_upper_left
  149. # 向き固定でない場合
  150. unless @direction_fix
  151. # 右向きだった場合は左を、下向きだった場合は上を向く
  152. @direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
  153. end
  154. # 上→左、左→上 のどちらかのコースが通行可能な場合
  155. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
  156. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
  157. # 座標を更新
  158. @x -= 1
  159. @y -= 1
  160. end
  161. end
  162. #--------------------------------------------------------------------------
  163. # ● 右上に移動
  164. #--------------------------------------------------------------------------
  165. def move_upper_right
  166. # 向き固定でない場合
  167. unless @direction_fix
  168. # 左向きだった場合は右を、下向きだった場合は上を向く
  169. @direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
  170. end
  171. # 上→右、右→上 のどちらかのコースが通行可能な場合
  172. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
  173. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
  174. # 座標を更新
  175. @x += 1
  176. @y -= 1
  177. end
  178. end
  179. attr_writer :move_speed
  180. attr_writer :step_anime
  181. end
  182. module Spriteset_Map_Module
  183. def setup_actor_character_sprites?
  184. return @setup_actor_character_sprites_flag != nil
  185. end
  186. def setup_actor_character_sprites(characters)
  187. if !setup_actor_character_sprites?
  188. index_game_player = 0
  189. @character_sprites.each_index do |i|
  190. if @character_sprites[i].character.instance_of?(Game_Player)
  191. index_game_player = i
  192. break
  193. end
  194. end
  195. for character in characters.reverse
  196. @character_sprites.unshift(
  197. Sprite_Character.new(@viewport1, character)
  198. )
  199. end
  200. @setup_actor_character_sprites_flag = true
  201. end
  202. end
  203. end
  204. module Scene_Map_Module
  205. def setup_actor_character_sprites(characters)
  206. @spriteset.setup_actor_character_sprites(characters)
  207. end
  208. end
  209. module Game_Party_Module
  210. $playerx = []
  211. $playery = []
  212. $playerz = []
  213. def set_transparent_actors(transparent)
  214. @transparent = transparent
  215. end
  216. def setup_actor_character_sprites
  217. if @characters == nil
  218. @characters = []
  219. for i in 1 ... $队伍人数
  220. @characters.push(Game_Party_Actor.new)
  221. end
  222. end
  223. for i in 1 ... $队伍人数
  224. @characters[i - 1].setup(actors[i])
  225. end
  226. if $scene.class.method_defined?('setup_actor_character_sprites')
  227. $scene.setup_actor_character_sprites(@characters)
  228. end
  229. end
  230. def update_party_actors
  231. setup_actor_character_sprites
  232. transparent = $game_player.transparent
  233. if transparent == false
  234. if TRANSPARENT_SWITCH
  235. transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX]
  236. end
  237. end
  238. for character in @characters
  239. character.transparent = transparent
  240. character.move_speed = $game_player.move_speed
  241. character.step_anime = $game_player.step_anime
  242. character.update
  243. end
  244. end
  245. def moveto_party_actors( x, y )
  246. setup_actor_character_sprites
  247. for character in @characters
  248. character.moveto( x, y )
  249. end
  250. if @move_list == nil
  251. @move_list = []
  252. end
  253. move_list_setup
  254. end
  255. def move_party_actors
  256. if @move_list == nil
  257. @move_list = []
  258. move_list_setup
  259. end
  260. @move_list.each_index do |i|
  261. if @characters[i] != nil
  262.   case @move_list[i].type
  263.   when Input::DOWN
  264.     @characters[i].move_down(@move_list[i].args[0])
  265.   when Input::LEFT
  266.     @characters[i].move_left(@move_list[i].args[0])
  267.   when Input::RIGHT
  268.     @characters[i].move_right(@move_list[i].args[0])
  269.   when Input::UP
  270.     @characters[i].move_up(@move_list[i].args[0])
  271.   when DOWN_LEFT
  272.     @characters[i].move_lower_left
  273.   when DOWN_RIGHT
  274.     @characters[i].move_lower_right
  275.   when UP_LEFT
  276.     @characters[i].move_upper_left
  277.   when UP_RIGHT
  278.     @characters[i].move_upper_right
  279.   when JUMP
  280.     @characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
  281.   end
  282. if $game_party.actors.size == 2
  283. if i == 0
  284.   $playerx[2] = @characters[i].x
  285.   $playery[2] = @characters[i].y
  286.   $playerz[2] = @characters[i].direction
  287. end
  288. elsif $game_party.actors.size == 3
  289.   if i == 0
  290.   $playerx[2] = @characters[i].x
  291.   $playery[2] = @characters[i].y
  292.   $playerz[2] = @characters[i].direction
  293.   elsif i == 1
  294.   $playerx[3] = @characters[i].x
  295.   $playery[3] = @characters[i].y  
  296.   $playerz[3] = @characters[i].direction
  297.   end
  298. end
  299. end

  300. end
  301. end
  302. class Move_List_Element
  303. def initialize(type,args)
  304. @type = type
  305. @args = args
  306. end
  307. def type() return @type end
  308. def args() return @args end
  309. end
  310. def move_list_setup
  311. for i in 0 .. $队伍人数
  312. @move_list[i] = nil
  313. end
  314. end
  315. def add_move_list(type,*args)
  316. @move_list.unshift(Move_List_Element.new(type,args)).pop
  317. end
  318. def move_down_party_actors(turn_enabled = true)
  319. move_party_actors
  320. add_move_list(Input::DOWN,turn_enabled)
  321. end
  322. def move_left_party_actors(turn_enabled = true)
  323. move_party_actors
  324. add_move_list(Input::LEFT,turn_enabled)
  325. end
  326. def move_right_party_actors(turn_enabled = true)
  327. move_party_actors
  328. add_move_list(Input::RIGHT,turn_enabled)
  329. end
  330. def move_up_party_actors(turn_enabled = true)
  331. move_party_actors
  332. add_move_list(Input::UP,turn_enabled)
  333. end
  334. def move_lower_left_party_actors
  335. move_party_actors
  336. add_move_list(DOWN_LEFT)
  337. end
  338. def move_lower_right_party_actors
  339. move_party_actors
  340. add_move_list(DOWN_RIGHT)
  341. end
  342. def move_upper_left_party_actors
  343. move_party_actors
  344. add_move_list(UP_LEFT)
  345. end
  346. def move_upper_right_party_actors
  347. move_party_actors
  348. add_move_list(UP_RIGHT)
  349. end
  350. def jump_party_actors(x_plus, y_plus)
  351. move_party_actors
  352. add_move_list(JUMP,x_plus, y_plus)
  353. end
  354. end
  355. module Game_Player_Module
  356. def update
  357. $game_party.update_party_actors
  358. super
  359. end
  360. def moveto( x, y )
  361. $game_party.moveto_party_actors( x, y )
  362. super( x, y )
  363. end
  364. def move_down(turn_enabled = true)
  365. if passable?(@x, @y, Input::DOWN)
  366. $game_party.move_down_party_actors(turn_enabled)
  367. end
  368. super(turn_enabled)
  369. end
  370. def move_left(turn_enabled = true)
  371. if passable?(@x, @y, Input::LEFT)
  372. $game_party.move_left_party_actors(turn_enabled)
  373. end
  374. super(turn_enabled)
  375. end
  376. def move_right(turn_enabled = true)
  377. if passable?(@x, @y, Input::RIGHT)
  378. $game_party.move_right_party_actors(turn_enabled)
  379. end
  380. super(turn_enabled)
  381. end
  382. def move_up(turn_enabled = true)
  383. if passable?(@x, @y, Input::UP)
  384. $game_party.move_up_party_actors(turn_enabled)
  385. end
  386. super(turn_enabled)
  387. end
  388. def move_lower_left
  389. # 下→左、左→下 のどちらかのコースが通行可能な場合
  390. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
  391. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
  392. $game_party.move_lower_left_party_actors
  393. end
  394. super
  395. end
  396. def move_lower_right
  397. # 下→右、右→下 のどちらかのコースが通行可能な場合
  398. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
  399. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
  400. $game_party.move_lower_right_party_actors
  401. end
  402. super
  403. end
  404. def move_upper_left
  405. # 上→左、左→上 のどちらかのコースが通行可能な場合
  406. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
  407. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
  408. $game_party.move_upper_left_party_actors
  409. end
  410. super
  411. end
  412. def move_upper_right
  413. # 上→右、右→上 のどちらかのコースが通行可能な場合
  414. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
  415. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
  416. $game_party.move_upper_right_party_actors
  417. end
  418. super
  419. end
  420. def jump(x_plus, y_plus)
  421. # 新しい座標を計算
  422. new_x = @x + x_plus
  423. new_y = @y + y_plus
  424. # 加算値が (0,0) の場合か、ジャンプ先が通行可能な場合
  425. if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
  426. $game_party.jump_party_actors(x_plus, y_plus)
  427. end
  428. super(x_plus, y_plus)
  429. end
  430. attr_reader :move_speed
  431. attr_reader :step_anime
  432. end
  433. end # module Train_Actor
  434. class Game_Party
  435. include Train_Actor::Game_Party_Module
  436. end
  437. class Game_Player
  438. include Train_Actor::Game_Player_Module
  439. end
  440. class Spriteset_Map
  441. include Train_Actor::Spriteset_Map_Module
  442. end
  443. class Scene_Map
  444. include Train_Actor::Scene_Map_Module
  445. end
  446. class Scene_Menu
  447. include Train_Actor::Scene_Map_Module
  448. end
  449. class Scene_Item
  450. include Train_Actor::Scene_Map_Module
  451. end
  452. class Scene_Skill
  453. include Train_Actor::Scene_Map_Module
  454. end
  455. class Scene_State
  456. include Train_Actor::Scene_Map_Module
  457. end
  458. class Scene_Save
  459. include Train_Actor::Scene_Map_Module
  460. end
  461. class Scene_End
  462. include Train_Actor::Scene_Map_Module
  463. end


  464. #==============================================================================
  465. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  466. #==============================================================================
复制代码
丧尸语录-终の千年
类型:恐怖
      爱情
      悬疑
      休闲
の名:千年の制裁の
系统--- 50%
画面---  0%
美工---  0%
地图---  0%
数据库-  0%
剧情---  50%
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

7
发表于 2009-5-30 21:32:35 | 只看该作者
贴长段的脚本请用HTML代码- -!
有些人看到这样长度的脚本就会立刻头痛而立即离开!











你知道得太多了

回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1515
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

8
发表于 2009-5-31 00:01:41 | 只看该作者
伪事件版一个。有个脚本支持,但还是事件为主。
http://rpg.blue/upload_program/d ... ��蛇_124128035.rar
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-5-10
帖子
35
9
 楼主| 发表于 2009-5-31 00:49:47 | 只看该作者
上面这个不是可以无限吃下去的。。。。如果做随机的话会好点。脚本的话是自动跟随+队伍扩充
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

10
发表于 2009-5-31 01:00:04 | 只看该作者
有脚本半的啊…… - -
技术区自己搜索……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 07:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表