âī¸Fairness
Card Flip SC Code:
let mut rand_source = RandomnessSource::<Self::Api>::new();
// Calculate a random number between 1 - 200 (x2), 1 - 300 (x3) and 1 - 400 (x4)
let random_result = rand_source.next_u16_in_range(1, game_mode * 100 + 1);
// The actual card is the rest from division + 1 since selected_card starts from 1
let result = (random_result % game_mode + 1) as u8;
// Caller LOST...
if selected_card != result {
self.distribute_tokens(collection, &token, &amount, false);
return ( ManagedBuffer::from(b"unlucky"), result ).into();
}
// Caller WON!
let multiplier = BigUint::from(game_mode as u32);
let amount_won = &amount * &multiplier;
RPS SC Code:
let mut rand_source = RandomnessSource::<Self::Api>::new();
// Calculate a random number between 1 - 300
let random_result = rand_source.next_u16_in_range(1, 301);
// The actual card is the rest from division + 1 since selected_card starts from 1
let result = (random_result % 3 + 1) as u8;
// Caller DRAW...
if selected_card == result {
self.distribute_tokens(collection, &token, &amount, true);
return ( ManagedBuffer::from(b"draw"), result ).into();
}
// Caller LOST...
if (1 == selected_card && 2 == result) // rock loses to paper
|| (2 == selected_card && 3 == result) // paper loses to scissors
|| (3 == selected_card && 1 == result) // scissors loses to rock
{
self.distribute_tokens(collection, &token, &amount, false);
return ( ManagedBuffer::from(b"lose"), result ).into();
}
// Caller WON!
let multiplier = BigUint::from(2u32);
let amount_won = &amount * &multiplier;
Battle Arena SC Code:
let mut rand_source = RandomnessSource::<Self::Api>::new();
// Calculate a random number between 1 - 200
let random_result = rand_source.next_u8_in_range(1, 201);
// Caller LOST...
if 0 == random_result % 2 {
self.distribute_tokens(&game.creator, collection, &token, &amount_won);
return ManagedBuffer::from(b"unlucky");
}
// Caller WON!
self.distribute_tokens(&caller, collection, &token, &amount_won);
Last updated