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

Project1

 找回密码
 注册会员
搜索
楼主: 柳之一

[原创发布] 【初级教学2】仿三国志舌战制作方法。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
发表于 2008-6-27 23:35:03 | 显示全部楼层
以下引用灯笼菜刀王于2008-6-27 13:41:08的发言:

= =怎么第二课难度就提升这么多~~~~~

电脑AI方面不会做,只用随机行么。或者,用作弊式...电脑出的牌永远是当前主题-v-

------不负责的分割线-----------

估计是上次那些高手们的搅和让柳之一先生火大了-v-


[本贴由作者于 2008-6-27 13:42:46 最后编辑]


等下一课吧,下一课柳前辈要讲 游戏王 了,那个AI,爽死了
期待下一课
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

发表于 2008-6-28 03:08:17 | 显示全部楼层
以下引用灯笼菜刀王于2008-6-27 13:41:08的发言:

= =怎么第二课难度就提升这么多~~~~~

电脑AI方面不会做,只用随机行么。或者,用作弊式...电脑出的牌永远是当前主题-v-

------不负责的分割线-----------

估计是上次那些高手们的搅和让柳之一先生火大了-v-

这个的AI可以用最简单的一个方式来编写,如果有当前主题的牌,那么就出当前主题里最大的牌;没有当前主题的牌,就出一张现有的牌中最大的……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2008-1-12
帖子
203
发表于 2008-6-28 22:19:23 | 显示全部楼层
报告老师,我来交作业啦
由于这个比较复杂,截图的话太多了,所以传工程
截一张效果图好啦。


还有,我制作过程中遇到了点问题,请问老师怎么才能在地图上显示两个
变量的值啊,注:我是脚本白痴
游戏里用的这个:http://rpg.blue/viewthread.php?tid=87360
那个vx版的地图上显示变量的脚本。不知能不能改成显示两个变量的

工程如下(做的很难看,不过有懒的做图的同学想用的话随便拿去好了)
http://rpg.blue/upload_program/files/舌战系统_95124944.rar

更新的(有简单的血条的):
http://rpg.blue/upload_program/files/舌战系统_95163563.rar

2008年6月29日19:51分更新:(改正了有时敌人出牌不显示的错误,
修善了敌人判断出牌的方法,改正了有时主题改不过来的错误)
http://rpg.blue/upload_program/files/舌战系统_95198257.rar
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37641
在线时间
5308 小时
注册时间
2006-11-10
帖子
6541
发表于 2008-6-28 22:59:45 | 显示全部楼层
交作业交作业....

  1. class Window_Minigame < Window_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化窗口
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     super(0, 0, 160, 64)
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.     refresh
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 刷新
  12.   #--------------------------------------------------------------------------
  13.   def refresh
  14.     self.contents.clear
  15.     $game_variables[1] = 100 #我方HP
  16.     $game_variables[2] = 100 #敌方HP
  17. cass $game_variables[3]
  18.   when = 1
  19.     motif = "故事"
  20.   when = 2
  21.     motif = "时节"
  22.   when = 3
  23.     motif = "道理"
  24.   end
  25. loop do
  26.   $game_temp.message_text= "游戏开始:\n我方HP:#{$game_variables[1]}\n敌方HP:#{$game_variables[2]}\n当前主题:#{motif}"
  27.    
  28.   a = rand(12)+1
  29.     b = a/4
  30.     c % a/4
  31. cass b
  32.     when 1
  33.      type = "故事"
  34.     when 2
  35.      type = "时节"
  36.     when 3
  37.      type = "道理"
  38.     end
  39. cass c
  40.   when 0
  41.     amo  = "特殊" #特殊牌处理。
  42.   when 1
  43.     amo  = "小"
  44.   when 2
  45.     amo  = "中"
  46.   when 3
  47.     amo  = "大"
  48.   end
  49. card1 = type + amo
  50. $game_variables[4] = a #第一张牌

  51. a = rand(12)+1
  52.     b = a/4
  53.     c % a/4
  54. cass b
  55.     when 1
  56.      type = "故事"
  57.     when 2
  58.      type = "时节"
  59.     when 3
  60.      type = "道理"
  61.     end
  62. cass c
  63.   when 0
  64.     amo  = "特殊" #特殊牌处理。
  65.   when 1
  66.     amo  = "小"
  67.   when 2
  68.     amo  = "中"
  69.   when 3
  70.     amo  = "大"
  71.   end
  72. card2 = type + amo
  73. $game_variables[5] = a #第二张牌

  74. a = rand(12)+1
  75.     b = a/4
  76.     c % a/4
  77. cass b
  78.     when 1
  79.      type = "故事"
  80.     when 2
  81.      type = "时节"
  82.     when 3
  83.      type = "道理"
  84.     end
  85. cass c
  86.   when 0
  87.     amo  = "特殊" #特殊牌处理。
  88.   when 1
  89.     amo  = "小"
  90.   when 2
  91.     amo  = "中"
  92.   when 3
  93.     amo  = "大"
  94.   end
  95. card3 = type + amo
  96. $game_variables[6] = a #第三张牌
  97. end
  98. def main
  99.     @sprite = Sprite.new
  100.     s1 = "#{card1}"
  101.     s2 = "#{card2}"
  102.     s3 = "#{card3}"
  103.     @command_window = Window_Command.new(192, [s1, s2, s3])
  104.     @command_window.back_opacity = 160
  105.     @command_window.x = 320 - @command_window.width / 2
  106.     @command_window.y = 288
  107.     Graphics.transition
  108.     loop do
  109.       # 刷新游戏画面
  110.       Graphics.update
  111.       # 刷新输入信息
  112.       Input.update
  113.       # 刷新画面
  114.       update
  115.       # 如果画面被切换就中断循环
  116.       if $scene != self
  117.         break
  118.       end
  119.     end
  120.     # 装备过渡
  121.     Graphics.freeze
  122.     # 释放命令窗口
  123.     @command_window.dispose
  124.     # 释放标题图形
  125.     @sprite.dispose
  126.   end
  127. def update
  128.     # 刷新命令窗口
  129.     @command_window.update
  130.     # 按下 C 键的情况下
  131.     if Input.trigger?(Input::C)
  132.       # 命令窗口的光标位置的分支
  133.       case @command_window.index
  134.       when 0  # 第一张牌
  135.         $game_temp.message_text = "我出#{card1}"
  136.         me = $game_variables[4]
  137.       when 1  # 第二张牌
  138.         $game_temp.message_text = "我出#{card2}"
  139.         me = $game_variables[5]
  140.       when 2  # 第三张牌
  141.         $game_temp.message_text = "我出#{card3}"
  142.         me = $game_variables[6]
  143.     end
  144.   end
  145. end
  146. end
  147. lood do
  148. a = rand(12)+1
  149.     b = a/4
  150.     c % a/4
  151. cass b
  152.     when 1
  153.      type = "故事"
  154.     when 2
  155.      type = "时节"
  156.     when 3
  157.      type = "道理"
  158.     end
  159. cass c
  160.   when 0
  161.     amo  = "特殊" #特殊牌处理。
  162.   when 1
  163.     amo  = "小"
  164.   when 2
  165.     amo  = "中"
  166.   when 3
  167.     amo  = "大"
  168.   end
  169. youcard = type + amo
  170. you = a

  171. me2 % me/4
  172. you2 % you/4
  173. if me/4 == you/4
  174.   if me2 == you2
  175.    $game_temp.message_text = "对方出#{youcard}\n平局"
  176.    $game_variables[3] = me/4
  177.   end
  178.   if me2 < you2
  179.    $game_temp.message_text = "对方出#{youcard}\n你输了"
  180.    $game_variables[1] -= 10
  181.    $game_variables[3] = you/4
  182.   end
  183.   if me2 > you2
  184.    $game_temp.message_text = "对方出#{youcard}\n你赢了"
  185.    $game_variables[2] -= 10
  186.    $game_variables[3] = me/4
  187.   end
  188. else
  189.   if $game_variables[3] == me/4
  190.     $game_temp.message_text = "对方出#{youcard}\n你赢了"
  191.     $game_variables[2] -= 10
  192.   elsif $game_variables[3] == you/4
  193.     $game_temp.message_text = "对方出#{youcard}\n你输了"
  194.     $game_variables[1] -= 10
  195.   else
  196.    if me2 < you2
  197.    $game_temp.message_text = "对方出#{youcard}\n你输了"
  198.    $game_variables[1] -= 10
  199.    $game_variables[3] = you/4
  200.   end
  201.    if me2 > you2
  202.    $game_temp.message_text = "对方出#{youcard}\n你赢了"
  203.    $game_variables[2] -= 10
  204.    $game_variables[3] = me/4
  205.   end
  206. end
  207. end
  208. if $game_variables[1] <= 0
  209.   $game_temp.message_text = "YOU LOST!"
  210.   break
  211.   end
  212. end
  213. if $game_variables[2] <= 0
  214.   $game_temp.message_text = "YOU WIN!"
  215.   break
  216. end
  217. end
  218. end
复制代码


第一次写脚本- -错误百出的句子,请帮忙改改错....
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37641
在线时间
5308 小时
注册时间
2006-11-10
帖子
6541
发表于 2008-6-28 23:03:26 | 显示全部楼层
以下引用亿万星辰于2008-6-27 19:08:17的发言:

这个的AI可以用最简单的一个方式来编写,如果有当前主题的牌,那么就出当前主题里最大的牌;没有当前主题的牌,就出一张现有的牌中最大的……

那个....我偷懒,直接让电脑用随机数了.....昨天脑糊了一晚上,睡觉满脑袋还都是if,else飞来飞去- -~~
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

发表于 2008-6-29 04:15:00 | 显示全部楼层
to 身之察察
整体效果都不错,规则也大致满足,需要再提出的一条是:
如果一方出当前主题的牌,则不论大小,当前主题牌的那方胜利。但是如果非当前主题一方的的大小胜过当前主题牌,则改变当前主题为非当前主题。

这条要求没有提现,至少是我在测试的过程中没有看到根据这个规则进行当前主题的更换,所以这里和要求是有一些差距的。
另一个就是关于对手的 HP,没有一个直观的体现,这就有点让我觉得有点盲目了……

to 灯笼菜刀王
这个……在整个结构上存在一些问题,建议还是用事件来做……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2008-1-12
帖子
203
发表于 2008-6-29 07:40:29 | 显示全部楼层
谢谢星老师耐心的批改偶的作业,辛苦您了

那条规则居然做着做着就给忘了。。。失误啊
现已在交作业那楼修正。
http://rpg.blue/upload_program/files/舌战系统_95124944.rar


另外,关于敌人hp的问题,我也想显示啊,可是我是新手
敌我双方的hp我是用变量的,可是我不知道怎样才能在地图上显示两个变量啊。。。

我搜到的vx版的地图显示变量脚本好像只能显示一个变量,想自己改一下,还不会改。。(所以请老师看的时候暂时用f9吧。。。)
我脚本很白痴的。(基本就是空白。。)不知道这个效果简不简单。假如方便的话,不知能否请老师大人简单地讲一下方法。
要是很麻烦的话就算了,等别的优秀的同学交了有那个效果的作业后,我趁机偷学一下好了。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

发表于 2008-6-29 16:29:30 | 显示全部楼层
以下引用身之察察于2008-6-28 23:40:29的发言:

谢谢星老师耐心的批改偶的作业,辛苦您了

那条规则居然做着做着就给忘了。。。失误啊
现已在交作业那楼修正。
http://rpg.blue/upload_program/files/舌战系统_95124944.rar

另外,关于敌人hp的问题,我也想显示啊,可是我是新手
敌我双方的hp我是用变量的,可是我不知道怎样才能在地图上显示两个变量啊。。。

我搜到的vx版的地图显示变量脚本好像只能显示一个变量,想自己改一下,还不会改。。(所以请老师看的时候暂时用f9吧。。。)
我脚本很白痴的。(基本就是空白。。)不知道这个效果简不简单。假如方便的话,不知能否请老师大人简单地讲一下方法。
要是很麻烦的话就算了,等别的优秀的同学交了有那个效果的作业后,我趁机偷学一下好了。


[本贴由作者于 2008-6-28 23:55:41 最后编辑]

告诉你:在对话框里显示变量使用\v[n] n=变量的值
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2008-1-12
帖子
203
发表于 2008-6-29 16:46:55 | 显示全部楼层
以下引用精灵使者于2008-6-29 8:29:30的发言:


告诉你:在对话框里显示变量使用\v[n] n=变量的值


谢谢,您是说,,每次扣血之后  用显示文章  通报一下血量?
这效果也太。。不能时时显示么。。
还是期待成绩好的同学们快交作业哇,让我看看您的敌我双方血量是怎么在地图上显示地。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

发表于 2008-6-29 17:01:57 | 显示全部楼层
以下引用身之察察于2008-6-29 8:46:55的发言:


以下引用精灵使者于2008-6-29 8:29:30的发言:


告诉你:在对话框里显示变量使用\v[n] n=变量的值



谢谢,您是说,,每次扣血之后  用显示文章  通报一下血量?
这效果也太。。不能时时显示么。。
还是期待成绩好的同学们快交作业哇,让我看看您的敌我双方血量是怎么在地图上显示地。

我记得以前有一个事件版的血条教程的……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 18:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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