一个简易的四则运算计算器
前言
这算是一个godot的练手项目,其实就是简单的button布局和代码获取按键的一个简单的练习。 这个计算器的大致的界面就和下图差不多。

项目内容
项目的文件系统结构也很简单,就是一个主场景、一个上图一样的图片,一个脚本文件,export是我后来添加的导出项目可行性文件用的。

项目窗口的大小为 260 X 380。

项目的启动页修改为上面的图片

场景上的元素如下图所显示出来的
界面编辑完成后是这样的

GDSctipt代码分析
界面的编辑没有什么技术含量,就简单的略过了,但是其实这个计算器的代码也很简单。需要向给主场景添加一个脚本,在使用for去循环一个子节点下面的所有按键,在通过connect函数传递了button的方法。在创建一个计算的方法就可以了。
extends Control
func _ready():
for item in $Control.get_children():
item.connect("pressed",self,"_button_press",[item.text])
pass # Replace with function body.
func _button_press(txt):
if txt == "C":
$Label.text = ""
elif txt == "=":
var command =$Label.text
var result = calc(command)
if typeof(result) == TYPE_BOOL:
$Label.text = "Error"
else:
$Label.text = str(result)
else:
var oldTxt = $Label.text
var newTxt = oldTxt+txt
$Label.text = newTxt
# print(txt)
func calc(input):
var script = GDScript.new()
script.set_source_code("tool\nfunc eval():\n\treturn(" + input + ")")
var err = script.reload()
print(err)
if err != OK:
return false
var obj = Reference.new()
obj.set_script(script)
var result = obj.eval()
return result
在_button_press函数中,通过connect中插入的值来判断当前被按下的是哪个按键,再根据输入是哪个按键来决定是需要显示在上方的label上还是进行运算。
运行结果和项目源码
运行结果如下:

项目的源文件可以在下方下载,里面的export目录中包含导出项目可以直接在win64位上面运行的exe文件。 链接:https://pan.baidu.com/s/168X0zRzgjYERR6-Y5zyyYQ?pwd=h2jf 提取码:h2jf