Project1

标题: 如何根据变量来显示文本文档中的信息 [打印本页]

作者: 深水炸弹    时间: 2015-3-10 00:43
标题: 如何根据变量来显示文本文档中的信息
本帖最后由 深水炸弹 于 2015-3-10 18:52 编辑

我这有医院病人的病例情况的文本文档(txt文档),每一行都有一个病人的信息: 病例号,姓名,病情,入院时间,出院时间等信息

21548  张三  单核细胞增多症  2014.1.2  2014.2.20  康复出院
54881  李四  急性阑尾炎         2014.5.3  2014.5.7    正常
35221  王五  心动过缓             2014.2.1  2014.8.5   出院观察

以上分别是 病例号,姓名,症状,入院时间,出院时间,备注
我想在RM中,输入$game_variables[40]=某个病例号,然后显示所有该病例号的那行信息情况。注:病例号有重复,长度有可能不一样

作者: RyanBern    时间: 2015-3-10 00:43
本帖最后由 RyanBern 于 2015-3-12 17:00 编辑

我可以帮忙做下。
不过有些更详细的信息需要LZ进一步提供。
1.作为输入的txt文档的内容格式是怎样的?方便的话传上来看一看。
2.输入病例号之后,是直接出一行原始信息,还是得到一个数据库对象(通过调用属性来获得相关信息)?


在没有提供以上信息的情况下,需要的脚本可能是这样:
RUBY 代码复制
  1. class Patient_Data
  2.   attr_accessor :patient_id
  3.   attr_accessor :name
  4.   attr_accessor :symptom
  5.   attr_accessor :time_check_in
  6.   attr_accessor :time_check_out
  7.   attr_accessor :note
  8.   attr_accessor :original_data
  9.   def self.init
  10.     # 文件的相对路径
  11.     filename = "Input.txt"
  12.     $data_patients = []
  13.     File.foreach(filename) do |line|
  14.       original_data = line.chomp
  15.       $data_patients << Patient_Data.new(original_data)
  16.     end
  17.   end
  18.   def initialize(str)
  19.     arr = str.split(" ")
  20.     @patient_id = arr[0]
  21.     @name = arr[1]
  22.     @symptom = arr[2]
  23.     @time_check_in = arr[3]
  24.     @time_check_out = arr[4]
  25.     @note = arr[5]
  26.     @original_data = str
  27.   end
  28.   def self.find_data_by_id
  29.     result = $data_patients.select{|item| item.patient_id == $game_variables[40].to_s}
  30.     return result.map{|item| item.original_data}
  31.   end
  32. end

使用时先调用Patient_Data.init来初始化。
然后根据$game_variables[40]来寻找信息,下面这句可以把符合条件的都显示出来。
RUBY 代码复制
  1. p Patient_Data.find_data_by_id

准备txt的时候一定要把其编码改成UTF8,否则会出现乱码。
另外,准备txt的时候要在第一行加上一组无关的信息,例如加上"0 0 0 0 0 0",否则第一组数据无法正常读取,具体原因我也不知道为什么。
例如:
0 0 0 0 0 0
21057 张三 单核细胞增多症 2014.05.01 2014.06.18 后期无症状
……


范例: Project6.rar (187.69 KB, 下载次数: 95)

作者: 深水炸弹    时间: 2015-3-10 09:47
RyanBern 发表于 2015-3-10 09:31
我可以帮忙做下。
不过有些更详细的信息需要LZ进一步提供。
1.作为输入的txt文档的内容格式是怎样的?方便 ...

病例号的字符和后面的字符是用空格隔开的
比如:21057 张三 单核细胞增多症 2014.05.01 2014.06.18 后期无症状
以上分别是:病例号,姓名,症状,住院时间,出院时间,备注
中间都是用单个空格隔开的,我也可以改成其他符号

我只需要显示出那行内容就可以了,前面加个文字“信息如下”就可以了,或者不要
作者: 芯☆淡茹水    时间: 2015-3-10 10:00
一个简单的范例
Project2.rar (187.93 KB, 下载次数: 83)
作者: 深水炸弹    时间: 2015-3-10 10:02
RyanBern 发表于 2015-3-10 09:31
我可以帮忙做下。
不过有些更详细的信息需要LZ进一步提供。
1.作为输入的txt文档的内容格式是怎样的?方便 ...

那要怎么输完后就弹出来呢,我脚本不是很懂。麻烦你了
作者: 深水炸弹    时间: 2015-3-10 10:09
芯☆淡茹水 发表于 2015-3-10 10:00
一个简单的范例

病例号有重复的,需要把所有重复的都显示出来,我看了下范例,只能显示第一个
作者: 深水炸弹    时间: 2015-3-10 10:24
RyanBern 发表于 2015-3-10 09:31
我可以帮忙做下。
不过有些更详细的信息需要LZ进一步提供。
1.作为输入的txt文档的内容格式是怎样的?方便 ...

01.result = $data_patients.select{|item| item.patient_id == $game_variables[40]}
这行报错了
作者: 芯☆淡茹水    时间: 2015-3-10 10:38
深水炸弹 发表于 2015-3-10 10:09
病例号有重复的,需要把所有重复的都显示出来,我看了下范例,只能显示第一个 ...

嘛~怎么落后了。顺便帮RB问下,其实读取以及编号什么的都没问题,关键是LZ需要用什么方式显示出来?
直接 p ? 还是用对话框?还是建个场景用窗口显示,选择病例号列表,对应的显示出与病例号相同的所有病例。
作者: 深水炸弹    时间: 2015-3-10 11:09
RyanBern 发表于 2015-3-10 09:31
我可以帮忙做下。
不过有些更详细的信息需要LZ进一步提供。
1.作为输入的txt文档的内容格式是怎样的?方便 ...

还是报错,能给我个具体的范例嘛,麻烦你了
作者: wolves    时间: 2015-3-10 11:52
本帖最后由 wolves 于 2015-3-10 11:53 编辑

敢问LZ是在rm默认脚本下添加一个功能还是直接实现这一个功能而不需要rpg系统呢
还有就是这个文本文档是不是utf-8格式的
作者: 深水炸弹    时间: 2015-3-10 11:53
wolves 发表于 2015-3-10 11:52
敢问LZ是在rm默认脚本下添加一个功能还是直接实现这一个功能而不需要rpg系统呢 ...

就是在RM下哦
作者: wolves    时间: 2015-3-10 11:55
要实现修改功能么
作者: wolves    时间: 2015-3-10 19:12
深水炸弹 发表于 2015-3-10 11:53
就是在RM下哦

这是例子,把文件设置成1.txt编码为utf-8的就行了。

Project1.rar

706.68 KB, 下载次数: 37






欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1