Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var starting_life = 20;
- var bear_bears = 37;
- var bear_lands = 23;
- var doomblade_doomblades = 37;
- var doomblade_lands = 23;
- //funcions
- function shuffle(array) {
- let currentIndex = array.length, randomIndex;
- // While there remain elements to shuffle.
- while (currentIndex > 0) {
- // Pick a remaining element.
- randomIndex = Math.floor(Math.random() * currentIndex);
- currentIndex--;
- // And swap it with the current element.
- [array[currentIndex], array[randomIndex]] = [
- array[randomIndex], array[currentIndex]];
- }
- return array;
- }
- var game_state = {};
- function initialize_game_state(){
- //initialize decks
- var bear_deck = [];
- for(var i = 0; i < bear_bears; i++){
- bear_deck.push(1);
- }
- for(var i = 0; i < bear_lands; i++){
- bear_deck.push(0);
- }
- bear_deck = shuffle(bear_deck);
- var doomblade_deck = [];
- for(var i = 0; i < doomblade_doomblades; i++){
- doomblade_deck.push(2);
- }
- for(var i = 0; i < doomblade_lands; i++){
- doomblade_deck.push(0);
- }
- doomblade_deck = shuffle(doomblade_deck);
- game_state = {
- doomblade_life:starting_life,
- bear_deck:bear_deck,
- doomblade_deck:doomblade_deck,
- bear_hand:[],
- doomblade_hand:[],
- bear_lands:0,
- doomblade_lands:0,
- bears_on_board:0,
- bears_killed:0,
- turn_count:1
- };
- //starting hand
- for(var i = 0; i < 7; i++){
- game_state.bear_hand.push(game_state.bear_deck.pop());
- }
- for(var i = 0; i < 7; i++){
- game_state.doomblade_hand.push(game_state.doomblade_deck.pop());
- }
- }
- //bear turn
- function bear_turn(){
- //draw
- game_state.bear_hand.push(game_state.bear_deck.pop());
- //play land
- if( game_state.bear_hand.includes(0) ){
- game_state.bear_hand.splice( game_state.bear_hand.indexOf(0) ,1 );
- game_state.bear_lands++;
- }
- //play bears
- var available_mana = game_state.bear_lands;
- while( game_state.bear_hand.includes(1) && available_mana > 1 ){
- game_state.bear_hand.splice( game_state.bear_hand.indexOf(1) ,1 );
- game_state.bears_on_board++;
- available_mana -= 2;
- }
- }
- //doomblade turn
- function doomblade_turn(){
- //draw unless first turn
- if(game_state.turn_count != 1){
- game_state.doomblade_hand.push(game_state.doomblade_deck.pop());
- }
- //play land
- if( game_state.doomblade_hand.includes(0) ){
- game_state.doomblade_hand.splice( game_state.doomblade_hand.indexOf(0) ,1 );
- game_state.doomblade_lands++;
- }
- //kill bears
- var available_mana = game_state.doomblade_lands;
- while( game_state.doomblade_hand.includes(2) && game_state.bears_on_board > 0 && available_mana > 1 ){
- game_state.doomblade_hand.splice( game_state.doomblade_hand.indexOf(2) ,1 );
- game_state.bears_on_board--;
- game_state.bears_killed++;
- available_mana -= 2;
- }
- //discard cards
- while( game_state.doomblade_hand.length > 7 ){
- if( game_state.doomblade_hand.includes(0) ){
- game_state.doomblade_hand.splice( game_state.doomblade_hand.indexOf(0) ,1 );
- }else{
- game_state.doomblade_hand.splice( game_state.doomblade_hand.indexOf(2) ,1 );
- }
- }
- }
- var game_over = 0;
- //show game_state
- function show_game_state(){
- console.log("TURN #:" + game_state.turn_count);
- console.log("---BEAR HAND:" + game_state.bear_hand.toString());
- console.log("---BEAR LANDS:" + game_state.bear_lands);
- console.log("---BOARD STATE:" + game_state.bears_on_board + " BEARS");
- console.log("-----BEARS KILLED:" + game_state.bears_killed + " BEARS");
- console.log("---DOOMBLADE HAND:" + game_state.doomblade_hand.toString());
- console.log("---DOOMBLADE LANDS:" + game_state.doomblade_lands);
- console.log("---DOOMBLADE LIFE:" + game_state.doomblade_life);
- }
- //turn cycle
- function turn_cycle(){
- doomblade_turn();
- //console.log("DB TURN: " + game_state.turn_count);
- //show_game_state();
- //gg if bear deck has no cards
- if(game_state.bear_deck.length == 0){
- game_over = 1;
- console.log("BEAR LOSS");
- bear_loss++;
- show_game_state();
- return;
- }
- //gg if bear deck has lethal
- if(game_state.bears_on_board > 0){
- game_state.doomblade_life -= game_state.bears_on_board * 2;
- if( game_state.doomblade_life <= 0 ){
- game_over = 1;
- console.log("BEAR WIN");
- bear_wins++;
- show_game_state();
- return;
- }
- }
- bear_turn();
- //console.log("BEAR TURN: " + game_state.turn_count);
- //show_game_state();
- game_state.turn_count++;
- }
- var bear_wins = 0;
- var bear_loss = 0;
- for(var j = 0; j < 100; j++){
- initialize_game_state();
- game_over = 0;
- while( game_state.turn_count < 60 && game_over == 0){
- turn_cycle();
- }
- }
- console.log(bear_wins);
- console.log(bear_loss);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement