新dApp《幸运水果机》申请上线



  • 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;
                    }
                }
            }   
                
    
            }
        }      
    
        }
    
    
    

Log in to reply