智能合约游戏案例初阶
1、合约
认识合约
pragma solidity ^0.4.19;
contract Study{
uint aaa = 1;
uint bbb = 2;
function add(uint aaa,uint bbb)public returns(uint){
return aaa+bbb;
}
}
以上是一个将aaa和bbb相加的一个简单合约,由此可以看出,首先写一份合约先写它的版本pragma solidity ^0.4.19,这里用的是0.4.19=<"版本"<0.5.0,也可以根据自己的需求选择合适的版本;接着写关键字contract(合约)和此合约的名字+{};然后就可以在{}里写合约的内容。
这里先定义了两个整形aaa和bbb并赋值1和2,再写一个相加的函数返回aaa+bbb,自此一个合约就写完了。
2、整型、算数运算符和状态变量
(1)、整形
- 有符整形(int)
- 无符整形(uint)
例:-1为有符整形
1为无符整形
(2)、运算符
- 算数运算符(+、-、*、/、%、++、--)
- 比较运算符(==、!=、>、<、<=、>=)
- 逻辑运算符(||、&&、!)
- 赋值运算符(=、+=、-=、%=、*=、/=)
- 条件运算符(?:)
(3)、状态变量
变量值永远保存在合约存储空间中的的变量就是状态变量
3、结构体、字符串和数组
结构体用于复合型数据,是一个应用类型
结构体格式:struct StructName{type1 type_name_1;type2 type_name_2;}
数组是一种数据结构,他是储存同类型元素的有序集合,一般为动态数组
数组格式:type [arraySize] arrayName;
type [] arrayName;
pragma solidity 0.4.19;
contract Study{
//结构体struct
struct Pet{
//字符串string
string name;
uint age;
}
//数组[]
Pet[] public pets;
//注:这里是可变数组,不可变数组应为 Pet[1] public pets;意为只能容下一个数据的数组
}
4、函数
函数格式: function 函数名(参数1,参数2,...) 函数可见性 状态可变性 returns(返回值类型){}
函数可见性,状态可变性,返回值要视情况而定
pragma solodity ^0.4.19;
contract Study{
//结构体struct
struct Pet{
//字符串string
string name;
uint age;
}
//数组[]
Pet[] public pets;
//函数
function createPet(string _name, uint _dna) private returns{
pets.push(Pet(_name, _dna));
}
}
上面定义了一个creatPet函数,并将一组数据传入到pets数组中,没有返回值