多玩首页 魔兽首页 副本 视频 插件 新闻 图片 数据库 公会 论坛
首页 | 界面·头像 | 动作条 | 团队·副本 | 聊天·交流 | 任务 | 背包·银行 | 战斗·PVP | 商业·物品 | 地图 | 职业 | 个性界面
  当前位置:首页>插件分类>信息·综合>插件列表
四则计算器 1.0
发布者:  tg123
更新日期:  2008-05-13
界面语言:  简体中文
插件类型:  非库类
插件来源:  CWDG
运行环境:  for WOW 2.4
插件等级:  ★★★☆☆
使用说明:  

四则计算器

分类信息 - 发表插件

插件名称 四则计算器
版本号 1.0
更新日期 2008-05-13
分类 界面增强
支持语言 通用
引用库
WoW版本 2.4
适用人群 初级+
原始/发布作者 原创
类型 原创
授权方式 免费
原始Url this->
发布Url this->
讨论区Url this->
简介 四则计算器
用法 /?? 1+2*(3-4/5)
  
  

 
--------------------听说这叫分割线----------------------
以下送给lua初学者
包括lua中 简单的面向对象 简单的字符串处理 简单的数据结构
我也是个初学者 水平有限 大部分治疗来源于lua.org

以下代码供大家修改
希望大家最终能写出更优秀的插件

红色为 lua中类的使用
代码为lua实现利用堆栈计算 四则表达式

ovs 数值栈 ops符号栈


-- code begin
exp="";
getchpoint=0;
op={["+"]=1,["-"]=1,["*"]=2,["/"]=2};
stack={};
stack.__index=stack;

function stack.new()
local x={};
x.data={};
setmetatable(x,stack);
return x;
end;

function stack:push(v)
tinsert(self.data,v);
end

function stack:pop()
r=self.data[getn(self.data)]
tremove(self.data);
if r==nil then
  return 0;
else
  return r;
end

end

function stack:top()
r=self.data[getn(self.data)]
if r==nil then
  return 0;
else
  return r;
end
return r;
end

function stack:getn()
return getn(self.data);
end


function getch()
getchpoint=getchpoint+1;
return(strsub(exp,getchpoint,getchpoint));
end
function oplv(opx)
if op[opx]==nil then
  return 0;
else
  return op[opx];
end
end
function CALC_Command(msg)
--DEFAULT_CHAT_FRAME:AddMessage(msg);

exp=msg.."#";
getchpoint=0;
local ovs=stack.new();
local ops=stack.new();
tmp="";
ops:push("#");
repeat
  ch=getch();
  if strbyte(ch)>47 and strbyte(ch)<58 then
   tmp=tmp..ch;
  else
   if tmp~="" then
    ovs:push(tmp)
    tmp="";
   end
   if(oplv(ch)>oplv(ops:top()) or ch=="(") then
    ops:push(ch);
   elseif(ch==")" and ops:top()=="(") then
    ops:pop();
   else
    thisop=ops:pop()
    if thisop=="+" then
     ovs:push(ovs:pop()+ovs:pop().."");
     getchpoint=getchpoint-1;
    elseif thisop=="-" then
     ovs:push(0-ovs:pop()+ovs:pop().."");
     getchpoint=getchpoint-1;
    elseif thisop=="*" then
     ovs:push(ovs:pop()*ovs:pop().."");
     getchpoint=getchpoint-1;
    elseif thisop=="/" then
     ovs:push(1/ovs:pop()*ovs:pop().."");
     getchpoint=getchpoint-1;
    elseif thisop=="#" then
    else
     DEFAULT_CHAT_FRAME:AddMessage("遇到未定义运算符\""..ch.."\"计算结果可能错误");
    end
   
   end
  end
until ops:getn()==0

DEFAULT_CHAT_FRAME:AddMessage(msg.."="..ovs:top());

end

SlashCmdList["CALC"] = CALC_Command;
SLASH_CALC1 = "/??";
SLASH_CALC2 = "/??";

根据 Robin 建议加入小数功能

本作品代码优秀 欢迎 大家参观学习 绝对根数据结构教课书上讲的一模一样
下载地址: ·calc_1.0.rar
下载说明: ☉本站ACE2类插件需要 !!!CWDGLIBPACK 整合库支持!
☉如果遇到什么问题,请到本站论坛去咨寻。
☉魔兽插件安装方法:将插件文件下载后解压缩到
☉魔兽世界安装目录里Interface文件夹下 AddOns目录里。
☉路径 X:\WOW\Interface\AddOns\
☉如发现页面未刷新,请点击这里【刷新本页
 
[收藏] [推荐] [查看所有评论(1条)] [返回顶部] [打印本页] [关闭窗口]  
 
   站内搜索
 
   
热门搜索:
 字体  ace2  一键  Atlas  ACE2
  热门软件
·攻击伤害显示器 DamageEx v2.05
·观察助手 MerInspect 2.3.4
·BUFF/DEBUFF超酷特效 Power Aura
·炽火鼠标提示 zTip 2.6fix
·装备数值解析与比较 RatingBuste
·在线查询DKP分数插件 MERDKP 多
·提示增强 IceTip 2.0.1352
·镶嵌宝石&附魔提示 JEWELTIPS r8
·鼠标提示信息 TipTac v080611
·精简强大的游戏信息 SLData Text
·怪物数据库 MobInfo2 3.61汉化修
·玩家菜单增强 FriendsMenuXP 200
  相关软件
·游戏内存优化 GCTweak
·帮助你设置界面 Align 界面网格
·交通船舶計時器 Nauticus 1.6
·小巧的系统状态显示 PerfBlock
·特定事件产生视觉效果 Avion (Po
·强悍的组合键功能插件 Clique r1
·彩色公会,好友,查询列表 XGuild
·自动加入寻求组队频道 AutoLFG_v
·鼠标提示跟随 TipBuddy v2.39 fo
·萝卜龙眼计时插件 FelwoodFarmer
·技能计数器 lern2count r76948
·信息重定向 Message Redirect v2
  急云推荐
·攻击伤害显示器 DamageEx v2.05
·炼金爆击统计 AlchemyProcs 1.0
·罗盘420 420Compass 1.1.6
·打断助手 CSAssist 0.603
·装备分析 Rawr国际版 b16_080901
·能量恢复 NugEnergy 1.1.0
·日常任务预览 DailyQuestViewer