设为首页收藏本站

仙剑之十里坡

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5322|回复: 9
打印 上一主题 下一主题

RM计算器!作者:七夕小雨

[复制链接]

1013

主题

5

听众

2万

积分

返璞归真

不器用な星の瞬き

会员等级: 10

  • TA的每日心情
    擦汗
    昨天 20:16
  • 签到天数: 1406 天

    [LV.10]以坛为家III

    精华
    2
    积分
    23743
    历练
    3
    声望
    133
    人气
    2619

    转帖之王 金融巨子 黑色羽翼

    单身中……
    帮我摆脱单身吧
    跳转到指定楼层
    1
    发表于 2010-3-13 17:19:26 |只看该作者 |倒序浏览

    1. #==========================================================================
    2. #RM计算机……无用产物之一
    3. #脚本作者by 七夕小雨
    4. #============================================================================
    5. #Window_Command懒得写了……直接用星辰大人的好了……
    6. class Window_Command_Compute < Window_Selectable
    7. #--------------------------------------------------------------------------
    8. # ● 初始化对像
    9. #     width    : 每格的的宽
    10. #     row      : 行数   自己根据命令数算好行列的值,否则^^b
    11. #     column   : 列数
    12. #     commands : 命令字符串序列
    13. #--------------------------------------------------------------------------
    14. def initialize(width, commands, column=1)
    15.    row = commands.size / column
    16.    # 由命令的个数计算出窗口的宽和高
    17.    super(0, 0, width, row * 32 + 32)
    18.    @item_max = commands.size
    19.    @commands = commands
    20.    @row = row
    21.    @width_txt = (width-32)/column
    22.    @column_max = column
    23.    self.contents = Bitmap.new(width-32, @row * 32)
    24.    refresh
    25.    self.index = 0
    26. end
    27. #--------------------------------------------------------------------------
    28. # ● 刷新
    29. #--------------------------------------------------------------------------
    30. def refresh
    31.    self.contents.clear
    32.    self.contents.font.size = 18
    33.    for i in 0...@item_max
    34.      draw_item(i, normal_color)
    35.    end
    36. end
    37. #--------------------------------------------------------------------------
    38. # ● 描绘项目
    39. #     index : 项目编号
    40. #     color : 文字色
    41. #--------------------------------------------------------------------------
    42. def draw_item(index, color)
    43.    self.contents.font.color = color
    44.    # 计算得出当前index所对应的内容所在的行
    45.    row_index = index / @column_max
    46.    # 根据余数得出所在的列
    47.    for y in 0...@column_max
    48.      if index % @column_max == y
    49.        rect = Rect.new(y * @width_txt, 32 * row_index , @width_txt, 32)
    50.        self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    51.        self.contents.draw_text(rect, @commands[index],1)
    52.        break
    53.      end
    54.    end
    55. end
    56. #--------------------------------------------------------------------------
    57. # ● 项目无效化
    58. #     index : 项目编号
    59. #--------------------------------------------------------------------------
    60. def disable_item(index)
    61.    draw_item(index, disabled_color)
    62. end
    63. #--------------------------------------------------------------------------
    64. # ● 项目有效化
    65. #     index : 项目编号
    66. #--------------------------------------------------------------------------
    67. def able_item(index)
    68.    draw_item(index, normal_color)
    69. end
    70.   #--------------------------------------------------------------------------
    71.   # ● 更新光标举行
    72.   #--------------------------------------------------------------------------
    73.   def update_cursor_rect
    74.     # 光标位置不满 0 的情况下
    75.     if @index < 0
    76.       self.cursor_rect.empty
    77.       return
    78.     end
    79.     # 获取当前的行
    80.     row = @index / @column_max
    81.     # 当前行被显示开头行前面的情况下
    82.     if row < self.top_row
    83.       # 从当前行向开头行滚动
    84.       self.top_row = row
    85.     end
    86.     # 当前行被显示末尾行之后的情况下
    87.     if row > self.top_row + (self.page_row_max - 1)
    88.       # 从当前行向末尾滚动
    89.       self.top_row = row - (self.page_row_max - 1)
    90.     end
    91.     # 计算光标的宽
    92.     cursor_width = @width_txt
    93.     # 计算光标坐标
    94.     x = @index % @column_max * cursor_width
    95.     y = @index / @column_max * 32 - self.oy
    96.     # 更新国标矩形
    97.     self.cursor_rect.set(x, y, @width_txt, 32)
    98.   end
    99. end
    100. #-------------------------七夕小雨华丽的分割线-------------------------------
    101. class Window_Compute < Window_Base
    102.   def initialize
    103.     super(250, 64, 182, 64)
    104.     self.contents = Bitmap.new(width - 32, height - 32)
    105.     $compute = "0"
    106.     refresh
    107.   end
    108.   def refresh
    109.    
    110.     self.contents.clear
    111.     self.contents.font.color = normal_color
    112.     self.contents.draw_text(-32, 0, 180, 32, $compute.to_s, 2)
    113.   end
    114. end
    115. #-------------------------七夕小雨华丽的分割线--------------------------------
    116. class Scene_Compute
    117.   #--------------------------------------------------------------------------
    118.   # ● 初始化对像
    119.   #     menu_index : 命令光标的初期位置
    120.   #--------------------------------------------------------------------------
    121.   def initialize(menu_index = 0)
    122.     @menu_index = menu_index
    123.   end
    124.   #--------------------------------------------------------------------------
    125.   # ● 主处理
    126.   #--------------------------------------------------------------------------
    127.   def main
    128.     @back = Spriteset_Map.new
    129.     @command_window = Window_Command_Compute.new(180, ["1","2","3","4","5","6","7","8","9","0","+","-","×","÷","=","归零"],4)
    130.     @command_window.x = 250
    131.     @command_window.y = 140
    132.     @command_window.index = @menu_index
    133.     @compute_window = Window_Compute.new
    134.     # 执行过渡
    135.     Graphics.transition
    136.     # 主循环
    137.     loop do
    138.       # 刷新游戏画面
    139.       Graphics.update
    140.       # 刷新输入信息
    141.       Input.update
    142.       # 刷新画面
    143.       update
    144.       # 如果切换画面就中断循环
    145.       if $scene != self
    146.         break
    147.       end
    148.     end
    149.     # 准备过渡
    150.     Graphics.freeze
    151.     @compute_window.dispose
    152.     @command_window.dispose
    153.     @back.dispose
    154.   end
    155.   #--------------------------------------------------------------------------
    156.   # ● 刷新画面
    157.   #--------------------------------------------------------------------------
    158.   def update
    159.     @compute_window.update
    160.     @compute_window.refresh
    161.     @command_window.update
    162.     # 命令窗口被激活的情况下: 调用 update_command
    163.     if @command_window.active
    164.       update_command
    165.       return
    166.     end
    167.   end
    168.   #--------------------------------------------------------------------------
    169.   # ● 刷新画面 (命令窗口被激活的情况下)
    170.   #--------------------------------------------------------------------------
    171.   def update_command
    172.     # 按下 B 键的情况下
    173.     if Input.trigger?(Input::B)
    174.       $game_system.se_play($data_system.cancel_se)
    175.       $scene = Scene_Map.new
    176.       return
    177.     end
    178.     # 按下 C 键的情况下
    179.     if Input.trigger?(Input::C)
    180.       case @command_window.index
    181.       when 0  # 1
    182.         $game_system.se_play($data_system.decision_se)
    183.         if $compute != "0"
    184.           $compute += "1"
    185.         else
    186.           $compute = "1"
    187.         end
    188.       when 1  # 2
    189.         $game_system.se_play($data_system.decision_se)
    190.         if $compute != "0"
    191.           $compute += "2"
    192.         else
    193.           $compute = "2"
    194.         end
    195.       when 2  # 3
    196.         $game_system.se_play($data_system.decision_se)
    197.         if $compute != "0"
    198.           $compute += "3"
    199.         else
    200.           $compute = "3"
    201.         end
    202.       when 3  # 4
    203.         $game_system.se_play($data_system.decision_se)
    204.         if $compute != "0"
    205.           $compute += "4"
    206.         else
    207.           $compute = "4"
    208.         end
    209.       when 4  # 5
    210.         $game_system.se_play($data_system.decision_se)
    211.         if $compute != "0"
    212.           $compute += "5"
    213.         else
    214.           $compute = "5"
    215.         end
    216.       when 5  # 6
    217.         $game_system.se_play($data_system.decision_se)
    218.         if $compute != "0"
    219.           $compute += "6"
    220.         else
    221.           $compute = "6"
    222.         end
    223.       when 6  # 7
    224.         $game_system.se_play($data_system.decision_se)
    225.         if $compute != "0"
    226.           $compute += "7"
    227.         else
    228.           $compute = "7"
    229.         end
    230.       when 7  # 8
    231.         $game_system.se_play($data_system.decision_se)
    232.         if $compute != "0"
    233.           $compute += "8"
    234.         else
    235.           $compute = "8"
    236.         end
    237.       when 8  # 9
    238.         $game_system.se_play($data_system.decision_se)
    239.         if $compute != "0"
    240.           $compute += "9"
    241.         else
    242.           $compute = "9"
    243.         end
    244.       when 9  # 0
    245.         $game_system.se_play($data_system.decision_se)
    246.         if $compute != "0"
    247.           $compute += "0"
    248.         else
    249.           $compute = "0"
    250.         end
    251.       when 10  # +
    252.         $game_system.se_play($data_system.decision_se)
    253.         @a = $compute.to_i
    254.         @Operation = 1
    255.         $compute = "0"
    256.       when 11  # -
    257.         $game_system.se_play($data_system.decision_se)
    258.         @a = $compute.to_i
    259.         @Operation = 2
    260.         $compute = "0"
    261.       when 12  # x
    262.         $game_system.se_play($data_system.decision_se)
    263.         @a = $compute.to_i
    264.         @Operation = 3
    265.         $compute = "0"
    266.       when 13  # /
    267.         $game_system.se_play($data_system.decision_se)
    268.         @a = $compute.to_i
    269.         @Operation = 4
    270.         $compute = "0"
    271.       when 14  # =
    272.         case @Operation
    273.         when 0
    274.           $game_system.se_play($data_system.cancel_se)
    275.         when 1
    276.           $game_system.se_play($data_system.decision_se)
    277.           @b = $compute.to_i
    278.           $c = @a + @b
    279.           $c = $c.to_s
    280.           $compute = $c
    281.         when 2
    282.           $game_system.se_play($data_system.decision_se)
    283.           @b = $compute.to_i
    284.           $c = @a - @b
    285.           $c = $c.to_s
    286.           $compute = $c
    287.         when 3
    288.           $game_system.se_play($data_system.decision_se)
    289.           @b = $compute.to_i
    290.           $c = @a * @b
    291.           $c = $c.to_s
    292.           $compute = $c
    293.         when 4
    294.           $game_system.se_play($data_system.decision_se)
    295.           @b = $compute.to_i
    296.           $c = @a / @b
    297.           $c = $c.to_s
    298.           $compute = $c
    299.         end
    300.       when 15
    301.         $game_system.se_play($data_system.cancel_se)
    302.         $compute = "0"
    303.         @Operation = 0
    304.       end
    305.       return
    306.     end
    307.   end
    308. end
    复制代码
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    转播转播0 分享淘帖0 分享分享0 收藏收藏0
    夜空の星に 捧げた願いの
    欠片積めて 爆誕する奇跡

    169

    主题

    6

    听众

    1万

    积分

    团队成员

    蜀山剑侠银行行长

    团队成员

  • TA的每日心情
    开心
    昨天 00:01
  • 签到天数: 889 天

    [LV.10]以坛为家III

    精华
    3
    积分
    13212
    历练
    7
    声望
    24
    人气
    2448

    金融巨子 润泽万物 坚若磐石

    单身中……
    帮我摆脱单身吧
    2
    发表于 2010-3-13 17:36:39 |只看该作者
    用这个脚本做的计算器有什么用?还有,怎么把这个计算器在事件中调出来?你都没写啊?
    (小声:既然是无用产物之一,干吗还拿出来?)
    于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。残阳阳兮是羊羊,吾乃最爱南宫煌。”
    回复

    使用道具 举报

    1082

    主题

    15

    听众

    1万

    积分

    管理员

    魔尊

    管理员

  • TA的每日心情
    无聊
    2024-4-22 00:16
  • 签到天数: 2281 天

    [LV.Master]伴坛终老

    精华
    3
    积分
    18267
    历练
    9
    声望
    342
    人气
    6122

    出神入化 润泽万物 金融巨子 神仙眷侣

    佛珠
    幸福:605℃
    3
    发表于 2010-3-13 18:25:59 |只看该作者
    这是个很囧的东西……
    回复

    使用道具 举报

    1013

    主题

    5

    听众

    2万

    积分

    返璞归真

    不器用な星の瞬き

    会员等级: 10

  • TA的每日心情
    擦汗
    昨天 20:16
  • 签到天数: 1406 天

    [LV.10]以坛为家III

    精华
    2
    积分
    23743
    历练
    3
    声望
    133
    人气
    2619

    转帖之王 金融巨子 黑色羽翼

    单身中……
    帮我摆脱单身吧
    4
    发表于 2010-3-13 18:41:59 |只看该作者
    还打错了一个字
    夜空の星に 捧げた願いの
    欠片積めて 爆誕する奇跡
    回复

    使用道具 举报

    1013

    主题

    5

    听众

    2万

    积分

    返璞归真

    不器用な星の瞬き

    会员等级: 10

  • TA的每日心情
    擦汗
    昨天 20:16
  • 签到天数: 1406 天

    [LV.10]以坛为家III

    精华
    2
    积分
    23743
    历练
    3
    声望
    133
    人气
    2619

    转帖之王 金融巨子 黑色羽翼

    单身中……
    帮我摆脱单身吧
    5
    发表于 2010-3-13 18:43:24 |只看该作者
    用这个脚本做的计算器有什么用?还有,怎么把这个计算器在事件中调出来?你都没写啊?
    (小声:既然是无用产物之一,干吗还拿出来?)
    最爱南宫煌 发表于 2010-3-12 21:36

    1.调用class
    2.这个无用是小雨写的,但有时可以用来挪作他用
    夜空の星に 捧げた願いの
    欠片積めて 爆誕する奇跡
    回复

    使用道具 举报

    32

    主题

    2

    听众

    3354

    积分

    威镇一方

    英俊潇洒、风流倜傥的无敌斑竹

    会员等级: 6

  • TA的每日心情
    无聊
    2013-2-27 21:53
  • 签到天数: 321 天

    [LV.8]以坛为家I

    精华
    1
    积分
    3354
    历练
    3
    声望
    45
    人气
    617

    黑色羽翼 神仙眷侣

    寻仙
    幸福:48℃
    6
    发表于 2010-3-13 22:21:48 |只看该作者
    这是小雨在博客里写的....
    不过这不是计算器吧....是RM计算机
    回复

    使用道具 举报

    1082

    主题

    15

    听众

    1万

    积分

    管理员

    魔尊

    管理员

  • TA的每日心情
    无聊
    2024-4-22 00:16
  • 签到天数: 2281 天

    [LV.Master]伴坛终老

    精华
    3
    积分
    18267
    历练
    9
    声望
    342
    人气
    6122

    出神入化 润泽万物 金融巨子 神仙眷侣

    佛珠
    幸福:605℃
    7
    发表于 2010-3-13 22:30:17 |只看该作者
    是计算器 不是计算机 = =
    回复

    使用道具 举报

    1013

    主题

    5

    听众

    2万

    积分

    返璞归真

    不器用な星の瞬き

    会员等级: 10

  • TA的每日心情
    擦汗
    昨天 20:16
  • 签到天数: 1406 天

    [LV.10]以坛为家III

    精华
    2
    积分
    23743
    历练
    3
    声望
    133
    人气
    2619

    转帖之王 金融巨子 黑色羽翼

    单身中……
    帮我摆脱单身吧
    8
    发表于 2010-3-14 08:37:09 |只看该作者
    这是小雨在博客里写的....
    不过这不是计算器吧....是RM计算机
    冷剑随风 发表于 2010-3-13 02:21

    这个是在时空传里翻出来的……

    外:就是计算器
    夜空の星に 捧げた願いの
    欠片積めて 爆誕する奇跡
    回复

    使用道具 举报

    28

    主题

    11

    听众

    5325

    积分

    管理员

    昨日黄昏

    管理员

  • TA的每日心情

    2010-9-25 00:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    精华
    5
    积分
    5325
    历练
    10
    声望
    119
    人气
    141

    润泽万物 匠心独运

    单身中……
    帮我摆脱单身吧
    9
    发表于 2010-3-14 10:30:01 |只看该作者
    事件——》脚本——》$scene = Scene_Compute.new
    就调出来了~~
    这个计算器问题还很多,零到除数,比如没有浮点运算等等,程序也可以写的更简单,但是却啰嗦的写了一堆~当然是方便新人看懂了
    回复

    使用道具 举报

    169

    主题

    6

    听众

    1万

    积分

    团队成员

    蜀山剑侠银行行长

    团队成员

  • TA的每日心情
    开心
    昨天 00:01
  • 签到天数: 889 天

    [LV.10]以坛为家III

    精华
    3
    积分
    13212
    历练
    7
    声望
    24
    人气
    2448

    金融巨子 润泽万物 坚若磐石

    单身中……
    帮我摆脱单身吧
    10
    发表于 2010-3-14 17:25:14 |只看该作者
    哦,我看也是。
    于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。残阳阳兮是羊羊,吾乃最爱南宫煌。”
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    手机版|Archiver|仙剑之十里坡 ( 苏ICP备11022766号 )  

    GMT+8, 2024-11-22 05:21 , Processed in 0.803785 second(s), 58 queries .

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部