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

Project1

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

[已经过期] 请问如何做一个单机排行榜。

[复制链接]

Lv2.观梦者

秀才

梦石
0
星屑
592
在线时间
156 小时
注册时间
2008-7-23
帖子
290

贵宾

跳转到指定楼层
1
发表于 2021-11-21 00:27:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 z121310 于 2021-11-22 21:15 编辑

思路如下:玩家进入游戏输入用户名,代入变量1;在游戏中获得积分代入变量2,游戏结束时生成一个文件,在主界面进“高分榜”选项,进入一张空地图,读取这个文件里的用户名和分数。

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2021-11-26 23:22:32 | 只看该作者
你可以采用跨存档的储存方式,简单的用跨存档变量即可。搜索关键字跨存档即可。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
413
在线时间
214 小时
注册时间
2011-3-21
帖子
161
3
发表于 2021-11-30 22:16:18 | 只看该作者
给你写了个脚本……
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Score
  3. #------------------------------------------------------------------------------
  4. #  成绩的类。
  5. #==============================================================================
  6.  
  7. class Score
  8.     attr_reader   :name  
  9.     attr_reader   :value
  10.     def initialize(name, value)
  11.         @name = name
  12.         @value = value
  13.     end
  14.   end
  15.  
  16.  
  17. #==============================================================================
  18. # ■ Score_List
  19. #------------------------------------------------------------------------------
  20. #  排名的类。
  21. #==============================================================================
  22.  
  23. class Score_List
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化
  26.   #--------------------------------------------------------------------------
  27.     def initialize()
  28.         @scoreList = {}
  29.         @fileName = "Data/Score.rxdata"
  30.     end
  31.   #--------------------------------------------------------------------------
  32.   # ● 保存排名核心
  33.   #--------------------------------------------------------------------------
  34.     def saveScoreList(score, new)
  35.         if FileTest.exist?(@fileName) && new == false
  36.             file = File.open(@fileName, "a")
  37.           else
  38.             file = File.open(@fileName, "w")
  39.         end
  40.         Marshal.dump(score, file)
  41.     end
  42.   #--------------------------------------------------------------------------
  43.   # ● 读取排名
  44.   #--------------------------------------------------------------------------
  45.     def loadScoreList()
  46.         if FileTest.exist?(@fileName)
  47.             file = File.open(@fileName, "r")
  48.         else
  49.             return {}
  50.         end
  51.         scoreFile = Marshal.load(file)
  52.         endFlag = false
  53.         while not endFlag
  54.           begin
  55.               score = Marshal.load(file)
  56.               @scoreList[score.name] = score.value
  57.           rescue
  58.               endFlag = true
  59.           end
  60.         end
  61.         return @scoreList
  62.       end
  63.   #--------------------------------------------------------------------------
  64.   # ● 保存排名
  65.   #--------------------------------------------------------------------------
  66.     def add(name,value)
  67.         score = Score.new(name,value)
  68.         saveScoreList(score,false)
  69.     end
  70.   #--------------------------------------------------------------------------
  71.   # ● 删除排名
  72.   #--------------------------------------------------------------------------
  73.     def remove(name)
  74.         @scoreList = loadScoreList()
  75.         list = @scoreList.keys
  76.         for n in list
  77.             if n != name
  78.                 s = Score.new(n,@scoreList[n])
  79.                 saveScoreList(s,true)
  80.             end
  81.         end
  82.     end
  83.  
  84. end
  85.  
  86. #==============================================================================
  87. # ■ Scene_Title
  88. #------------------------------------------------------------------------------
  89. #  处理标题画面的类。
  90. #==============================================================================
  91.  
  92. class Scene_Title
  93.   #--------------------------------------------------------------------------
  94.   # ● 主处理
  95.   #--------------------------------------------------------------------------
  96.   def main
  97.     # 战斗测试的情况下
  98.     if $BTEST
  99.       battle_test
  100.       return
  101.     end
  102.     # 载入数据库
  103.     $data_actors        = load_data("Data/Actors.rxdata")
  104.     $data_classes       = load_data("Data/Classes.rxdata")
  105.     $data_skills        = load_data("Data/Skills.rxdata")
  106.     $data_items         = load_data("Data/Items.rxdata")
  107.     $data_weapons       = load_data("Data/Weapons.rxdata")
  108.     $data_armors        = load_data("Data/Armors.rxdata")
  109.     $data_enemies       = load_data("Data/Enemies.rxdata")
  110.     $data_troops        = load_data("Data/Troops.rxdata")
  111.     $data_states        = load_data("Data/States.rxdata")
  112.     $data_animations    = load_data("Data/Animations.rxdata")
  113.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  114.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  115.     $data_system        = load_data("Data/System.rxdata")
  116.     # 生成系统对像
  117.     $game_system = Game_System.new
  118.     # 生成排名对象
  119.     $score_list = Score_List.new
  120.     # 生成标题图形
  121.     @sprite = Sprite.new
  122.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  123.     # 生成命令窗口
  124.     s1 = "新游戏"
  125.     s2 = "继续"
  126.     s3 = "排名"
  127.     s4 = "退出"
  128.     @command_window = Window_Command.new(192, [s1, s2, s3, s4])
  129.     @command_window.back_opacity = 160
  130.     @command_window.x = 320 - @command_window.width / 2
  131.     @command_window.y = 288
  132.     # 判定继续的有效性
  133.     # 存档文件一个也不存在的时候也调查
  134.     # 有効为 @continue_enabled 为 true、无效为 false
  135.     @continue_enabled = false
  136.     for i in 0..3
  137.       if FileTest.exist?("Save#{i+1}.rxdata")
  138.         @continue_enabled = true
  139.       end
  140.     end
  141.     # 继续为有效的情况下、光标停止在继续上
  142.     # 无效的情况下、继续的文字显示为灰色
  143.     if @continue_enabled
  144.       @command_window.index = 1
  145.     else
  146.       @command_window.disable_item(1)
  147.     end
  148.     # 演奏标题 BGM
  149.     $game_system.bgm_play($data_system.title_bgm)
  150.     # 停止演奏 ME、BGS
  151.     Audio.me_stop
  152.     Audio.bgs_stop
  153.     # 执行过渡
  154.     Graphics.transition
  155.     # 主循环
  156.     loop do
  157.       # 刷新游戏画面
  158.       Graphics.update
  159.       # 刷新输入信息
  160.       Input.update
  161.       # 刷新画面
  162.       update
  163.       # 如果画面被切换就中断循环
  164.       if $scene != self
  165.         break
  166.       end
  167.     end
  168.     # 装备过渡
  169.     Graphics.freeze
  170.     # 释放命令窗口
  171.     @command_window.dispose
  172.     # 释放标题图形
  173.     @sprite.bitmap.dispose
  174.     @sprite.dispose
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● 刷新画面
  178.   #--------------------------------------------------------------------------
  179.   def update
  180.     # 刷新命令窗口
  181.     @command_window.update
  182.     # 按下 C 键的情况下
  183.     if Input.trigger?(Input::C)
  184.       # 命令窗口的光标位置的分支
  185.       case @command_window.index
  186.       when 0  # 新游戏
  187.         command_new_game
  188.       when 1  # 继续
  189.         command_continue
  190.       when 2  # 排名
  191.         command_rank
  192.       when 3  # 退出
  193.         command_shutdown
  194.       end
  195.     end
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 命令 : 新游戏
  199.   #--------------------------------------------------------------------------
  200.   def command_new_game
  201.     # 演奏确定 SE
  202.     $game_system.se_play($data_system.decision_se)
  203.     # 停止 BGM
  204.     Audio.bgm_stop
  205.     # 重置测量游戏时间用的画面计数器
  206.     Graphics.frame_count = 0
  207.     # 生成各种游戏对像
  208.     $game_temp          = Game_Temp.new
  209.     $game_system        = Game_System.new
  210.     $game_switches      = Game_Switches.new
  211.     $game_variables     = Game_Variables.new
  212.     $game_self_switches = Game_SelfSwitches.new
  213.     $game_screen        = Game_Screen.new
  214.     $game_actors        = Game_Actors.new
  215.     $game_party         = Game_Party.new
  216.     $game_troop         = Game_Troop.new
  217.     $game_map           = Game_Map.new
  218.     $game_player        = Game_Player.new
  219.     # 设置初期同伴位置
  220.     $game_party.setup_starting_members
  221.     # 设置初期位置的地图
  222.     $game_map.setup($data_system.start_map_id)
  223.     # 主角向初期位置移动
  224.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  225.     # 刷新主角
  226.     $game_player.refresh
  227.     # 执行地图设置的 BGM 与 BGS 的自动切换
  228.     $game_map.autoplay
  229.     # 刷新地图 (执行并行事件)
  230.     $game_map.update
  231.     # 切换地图画面
  232.     $scene = Scene_Map.new
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 命令 : 继续
  236.   #--------------------------------------------------------------------------
  237.   def command_continue
  238.     # 继续无效的情况下
  239.     unless @continue_enabled
  240.       # 演奏无效 SE
  241.       $game_system.se_play($data_system.buzzer_se)
  242.       return
  243.     end
  244.     # 演奏确定 SE
  245.     $game_system.se_play($data_system.decision_se)
  246.     # 切换到读档画面
  247.     $scene = Scene_Load.new
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 命令 : 排名
  251.   #--------------------------------------------------------------------------
  252.   def command_rank
  253.     # 演奏确定 SE
  254.     $game_system.se_play($data_system.decision_se)
  255.     # 停止 BGM
  256.     Audio.bgm_stop
  257.     # 生成各种游戏对像
  258.     $game_temp          = Game_Temp.new
  259.     $game_system        = Game_System.new
  260.     $game_switches      = Game_Switches.new
  261.     $game_variables     = Game_Variables.new
  262.     $game_self_switches = Game_SelfSwitches.new
  263.     $game_screen        = Game_Screen.new
  264.     $game_actors        = Game_Actors.new
  265.     $game_party         = Game_Party.new
  266.     $game_troop         = Game_Troop.new
  267.     $game_map           = Game_Map.new
  268.     $game_player        = Game_Player.new
  269.     # 设置初期位置的地图
  270.     $game_map.setup(2) # 这里改排名地图id
  271.     # 主角向初期位置移动
  272.     $game_player.moveto(0, 0)
  273.     # 刷新主角
  274.     $game_player.refresh
  275.     # 执行地图设置的 BGM 与 BGS 的自动切换
  276.     $game_map.autoplay
  277.     # 刷新地图 (执行并行事件)
  278.     $game_map.update
  279.     # 切换地图画面
  280.     $scene = Scene_Map.new
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 命令 : 退出
  284.   #--------------------------------------------------------------------------
  285.   def command_shutdown
  286.     # 演奏确定 SE
  287.     $game_system.se_play($data_system.decision_se)
  288.     # BGM、BGS、ME 的淡入淡出
  289.     Audio.bgm_fade(800)
  290.     Audio.bgs_fade(800)
  291.     Audio.me_fade(800)
  292.     # 退出
  293.     $scene = nil
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ● 战斗测试
  297.   #--------------------------------------------------------------------------
  298.   def battle_test
  299.     # 载入数据库 (战斗测试用)
  300.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  301.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  302.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  303.     $data_items         = load_data("Data/BT_Items.rxdata")
  304.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  305.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  306.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  307.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  308.     $data_states        = load_data("Data/BT_States.rxdata")
  309.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  310.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  311.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  312.     $data_system        = load_data("Data/BT_System.rxdata")
  313.     # 重置测量游戏时间用的画面计数器
  314.     Graphics.frame_count = 0
  315.     # 生成各种游戏对像
  316.     $game_temp          = Game_Temp.new
  317.     $game_system        = Game_System.new
  318.     $game_switches      = Game_Switches.new
  319.     $game_variables     = Game_Variables.new
  320.     $game_self_switches = Game_SelfSwitches.new
  321.     $game_screen        = Game_Screen.new
  322.     $game_actors        = Game_Actors.new
  323.     $game_party         = Game_Party.new
  324.     $game_troop         = Game_Troop.new
  325.     $game_map           = Game_Map.new
  326.     $game_player        = Game_Player.new
  327.     # 设置战斗测试用同伴
  328.     $game_party.setup_battle_test_members
  329.     # 设置队伍 ID、可以逃走标志、战斗背景
  330.     $game_temp.battle_troop_id = $data_system.test_troop_id
  331.     $game_temp.battle_can_escape = true
  332.     $game_map.battleback_name = $data_system.battleback_name
  333.     # 演奏战斗开始 BGM
  334.     $game_system.se_play($data_system.battle_start_se)
  335.     # 演奏战斗 BGM
  336.     $game_system.bgm_play($game_system.battle_bgm)
  337.     # 切换到战斗画面
  338.     $scene = Scene_Battle.new
  339.   end
  340. end

然后还有个范例……用法啥的看范例就好
Project1.zip (209.39 KB, 下载次数: 25)
签名是什么 好吃么
好吃
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 21:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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