1.dApp的名称:幸运水果机/Classic Fruit Machine
2.dApp的介绍:
游戏介绍:
幸运水果机是仿造于20世纪80年代以来在亚洲流行的街机游戏。
幸运水果机在中国也被称为老虎机,日本的フルーツスロットマシン 或越南的Xèng Hoa Quả
游戏规则:
※当光标停留在某一个位置,若玩家恰好有下注该图案,则获得该图案的赔付。
※赔付额 = 玩家下注该图案的投注额该图案赔率。
※游戏赔率分为两类,每种图案都有各自的赔率,图案上有2的符号表示2倍赔率
例如,大苹果的赔率为5倍,小苹果的赔率为2倍,大西瓜的赔率为20倍,小西瓜的赔率为2倍。
3.上线状态:否
4.dApp的合约地址:vite_8bcfccee5ea9247ae2969ff51ca1b9242ec72677d27ae7189c以及合约代码审核链接:https://explorer.vite.net/zh/account/vite_8bcfccee5ea9247ae2969ff51ca1b9242ec72677d27ae7189c
5.合约代码如下:
pragma soliditypp ^0.4.3;
contract ViteBet{
address owner;
uint64[] public normalLotteryProbs;
uint8[] public selectedIndexes;
event spin(address indexed addr,uint256 totalReward,uint8[] selectedIndexes,uint8 index);
constructor() public {
owner = msg.sender;
normalLotteryProbs = new uint64[](16);
selectedIndexes = new uint8[](16);
normalLotteryProbs[0] = 16665;
normalLotteryProbs[1] = 70000;
normalLotteryProbs[2] = 1240000;
normalLotteryProbs[3] = 740000;
normalLotteryProbs[4] = 740000;
normalLotteryProbs[5] = 460000;
normalLotteryProbs[6] = 350000;
normalLotteryProbs[7] = 206666;
normalLotteryProbs[8] = 140000;
normalLotteryProbs[9] = 614710;
normalLotteryProbs[10] = 614710;
normalLotteryProbs[11] = 998904;
normalLotteryProbs[12] = 922065;
normalLotteryProbs[13] = 768387;
normalLotteryProbs[14] = 691549;
normalLotteryProbs[15] = 400000;
}
onMessage () payable {
}
onMessage DrawMoney(uint256 amount) {
require(owner == msg.sender);
require(amount <= balance(msg.tokenid));
msg.sender.transfer(msg.tokenid, amount);
}
onMessage BetAndRoll(uint256 pingguo,uint256 chengzi,uint256 mangguo,uint256 lingdang,uint256 xigua,uint256 xing,uint256 qiqi,uint256 bar) payable {
uint256 totalbet = pingguo + chengzi + mangguo + lingdang + xigua + xing + qiqi + bar;
address betAddr = msg.sender;
require(totalbet >= 1000000000000000000 && totalbet <= 99000000000000000000 * 8); //totalbet >= 1 1000000000000000000
require(totalbet == msg.amount);
require(pingguo >= 0);
require(chengzi >= 0);
require(mangguo >= 0);
require(lingdang >= 0);
require(xigua >= 0 );
require(xing >= 0 );
require(qiqi >= 0 );
require(bar >= 0 );
for(uint8 www = 0;www< 16;++www) {selectedIndexes[www] = 0;}
uint64 randomNumber = nextrandom();
uint64 rollTarget = randomNumber % 10000000;
uint8 index = 0 ;
uint8 multiSpinNum = 1;
if(rollTarget <= 8973656) {index = 1;multiSpinNum = 1 ; }
else if(rollTarget <= 9083656) {index = 16; multiSpinNum = 0;selectedIndexes[2] = 4;}
else if(rollTarget <= 9127656) {index = 17; multiSpinNum = 0;selectedIndexes[3] = 1;selectedIndexes[4] = 1;selectedIndexes[5] = 1;}
else if(rollTarget <= 9133211) {index = 18; multiSpinNum = 0;selectedIndexes[6] = 1;selectedIndexes[7] = 1;selectedIndexes[8] = 1;}
else if(rollTarget <= 9253749) {index = 19; multiSpinNum = 2;}
else if(rollTarget <= 9285892) {index = 20; multiSpinNum = 3;}
else if(rollTarget <= 9299954) {index = 21; multiSpinNum = 4;}
else if(rollTarget <= 9999999) {index = 23; multiSpinNum = 0;}
if (multiSpinNum > 0) {multiSpin(multiSpinNum);}
uint256 totalReward = 0 ;
if (selectedIndexes[0] == 1 ) {totalReward = totalReward + 120 * bar ;}
if (selectedIndexes[1] == 1 ){totalReward = totalReward + 50 * bar ;}
if (selectedIndexes[2] >= 1 ){totalReward = totalReward + 5 * pingguo * selectedIndexes[2] ;}
if (selectedIndexes[3] == 1 ){totalReward = totalReward + 10 * chengzi ;}
if (selectedIndexes[4] == 1 ){totalReward = totalReward + 10 * mangguo ;}
if (selectedIndexes[5] == 1 ){totalReward = totalReward + 15 * lingdang ;}
if (selectedIndexes[6] ==1 ){totalReward = totalReward + 20 * xigua; }
if (selectedIndexes[7] == 1 ){totalReward = totalReward + 30 * xing ;}
if (selectedIndexes[8] == 1 ){totalReward = totalReward + 40 * qiqi ;}
if (selectedIndexes[9] == 1 ){totalReward = totalReward + 2 * chengzi ;}
if (selectedIndexes[10] == 1 ){totalReward = totalReward + 2 * mangguo ;}
if (selectedIndexes[11] == 1 ){totalReward = totalReward + 2 * qiqi; }
if (selectedIndexes[12] == 1 ){totalReward = totalReward + 2 * xing ;}
if (selectedIndexes[13] == 1 ){totalReward = totalReward + 2 * xigua ;}
if (selectedIndexes[14] == 1 ){totalReward = totalReward + 2 * lingdang ;}
if (selectedIndexes[15] == 1 ){totalReward = totalReward + 2 * pingguo ;}
betAddr.transfer(msg.tokenid, totalReward);
tokenId vgc = "tti_3ccb0fe9845a720b65039e9e";
betAddr.transfer(vgc, msg.amount * 5 / 100);
emit spin(betAddr,totalReward, selectedIndexes,index);
}
function multiSpin(uint8 number) public
{
for(uint8 round = 0;round < number; ++round)
{
uint64 totalProb = 0;
for(uint8 index = 0;index < 16;++index)
{
if(selectedIndexes[index] == 0)
totalProb += normalLotteryProbs[index];
}
uint64 randomNumber = nextrandom();
uint64 prob = randomNumber % totalProb;
uint64 sum = 0;
for(uint8 texx = 0; texx < 16; ++texx)
{
if(selectedIndexes[texx] == 0)
{
sum += normalLotteryProbs[texx];
if(sum >= prob)
{
selectedIndexes[texx] = 1;
break;
}
}
}
}
}
}