今天用luckyScript寫了一個簡單的計算器作為測試程序,100多行代碼,一開始還是不敢寫過長的測試代碼,不然恐怕會被BUG壓死,有朋友問我寫好后會不會開源,我得坦承地告訴各位,由于一開始考慮不周,代碼的結構設計得并不好,到后期為了加上一些特性,寫了很多脫離框架的代碼,因此,結構整體上比較混亂,再加上本人沒有寫注釋的習慣,實在沒有開源的勇氣,怕誤人子弟。以后2.0版本應該會對代碼進行一次重構,到時才會考慮開源。
網上也有很多優秀的開源腳本引擎,有心想學習腳本引擎的朋友可以去搜來看下。
1
class Counter
2

{
3
protected:
4
func isNum(var str)
5
{
6
return (str >= "0") && (str <= "9");
7
}
8
9
func isOp(var str)
10
{
11
return (str == "*") || (str == "/") || (str == "+") || (str == "-") || (str == "%");
12
}
13
14
func isSpace(var str)
15
{
16
return (str == " " || str == "\t" || str == "\n");
17
}
18
19
public:
20
func getResult(var op)
21
{
22
if(! isOp(op))
23
{
24
print("inlegal operator!");
25
newLine();
26
return -1;
27
}
28
29
var result = 0;
30
if(op == "+")
31
{
32
result = mLeftOp + mRightOp;
33
}
34
else if(op == "-")
35
{
36
result = mLeftOp - mRightOp;
37
}
38
else if(op == "*")
39
{
40
result = mLeftOp * mRightOp;
41
}
42
else if(op == "%")
43
{
44
result = mLeftOp % mRightOp;
45
}
46
else
47
{
48
result = mLeftOp / mRightOp;
49
}
50
51
return result;
52
}
53
54
func setOp(var lOp,var rOp)
55
{
56
if((! isNum(lOp)) || (! isNum(rOp)))
57
{
58
print("inlegal operator!");
59
newLine();
60
}
61
else
62
{
63
var lValue = atoi(lOp);
64
var rValue = atoi(rOp);
65
mLeftOp = lValue;
66
mRightOp = rValue;
67
}
68
}
69
70
private:
71
var mLeftOp;
72
var mRightOp;
73
};
74
75
76
func Main()
77

{
78
var input;
79
var counter = new Counter();
80
var result = "0";
81
print("/**********************************************");
82
newLine();
83
print("Lucky script test programe: Calculator")
84
newLine();
85
print("***********************************************/");
86
newLine();
87
while(1)
88
{
89
newLine();
90
print("Please enter operand value: ");
91
input = getInputString();
92
newLine();
93
94
counter.setOp(result,input);
95
96
print("Please enter operator,press 0 to reset,press -1 to exit: ");
97
input = getInputString();
98
newLine();
99
100
if(input == "0")
101
{
102
result = "0";
103
continue;
104
}
105
106
if(input == "-1")
107
{
108
break;
109
}
110
111
result = counter.getResult(input);
112
print("Result is: ");
113
print(result);
114
newLine();
115
116
result = itoa(result);
117
}
118
}
119

2



3

4

5



6

7

8

9

10



11

12

13

14

15



16

17

18

19

20

21



22

23



24

25

26

27

28

29

30

31



32

33

34

35



36

37

38

39



40

41

42

43



44

45

46

47



48

49

50

51

52

53

54

55



56

57



58

59

60

61

62



63

64

65

66

67

68

69

70

71

72

73

74

75

76

77



78

79

80

81

82

83

84

85

86

87

88



89

90

91

92

93

94

95

96

97

98

99

100

101



102

103

104

105

106

107



108

109

110

111

112

113

114

115

116

117

118

119

運行結果: