NMD 295 Final; WAR.

Screen Shot 2014-02-14 at 3.19.21 PM Screen Shot 2014-02-14 at 3.19.01 PM

 

This game was a group project. It involved coding with JavaScript, HTML, and CSS. This was our first exposure to JavaScript, and it took almost half of a semester to complete. The code is below;

 

<!DOCTYPE HTML>
<html>
    <head>
        <style>

        .startbutton{
            position: center;
            display: block;
            left: 126px;
            top: 46px;

        }

        .drawButton{
            position: absolute;
            display: block;
            left: 455px;
            top: 705px;

        }

        .card{
            position: absolute;
            display: block;
        }

        .card1, .card2, .card3, .card4, .card5{
            position: absolute;
            display: block;            
            top: 382px;
            z-index: 10;
        }
        .card1{
            left: 249px;
        } 
        .card2{
            left: 421px;
        }  
        .card3{
            left: 423px;
        }  
        .card4{
            left: 605px;
        }  
        .card5{
            left: 787px;
        }   
        #score{
            position: absolute;
            display: block;
            left: 112px;
            top: 210px;
            line-height: 26px;
            font-size: 14px;
        }      
        </style>

        <script type="text/javascript">
            //overall game section
            //Card suits and values
            var suits = ['clubs', 'diamonds', 'hearts', 'spades'];
            var values = ['two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'jack', 'queen', 'king', 'ace'];

            function init(){
                theDeck = new Deck();

                player1 = theDeck.deck.slice(0,25);
                player2 = theDeck.deck.slice(25,51);

                document.getElementById('startbutton').onmouseup = draw;
                document.getElementById('resetbutton').onmouseup = reset;
                document.getElementById('instructionbutton').onmouseup = instructions;
                //document.getElementById('player1button').onmouseup = player1;
                //document.getElementById('player2button').onmouseup = player2;
                //document.getElementById('scorebutton').onmouseup = score;

                // play();
            }

            function startGame(){
                thePlayer.redrawHand();
                thePlayer.score -= 1;

            }

            function draw(oldcards){
                var card1 = player1.shift();
                var card2 = player2.shift();
                console.log(player2);

                card1.img.className = 'card1';
                card2.img.className = 'card2';
                card1.show();
                card2.show();
                if(card1.numbervalue> card2.numbervalue){
                    player1.push(card1)
                    player1.push(card2)
                    console.log("p1 win")
                }

                if(card1.numbervalue< card2.numbervalue){
                    player2.push(card1)
                    player2.push(card2)
                    console.log("p2 win")

                }

                if(card1.numbervalue== card2.numbervalue){
                    var drawn=[card1,card2]
                    drawn.push(player1.shift());
                    drawn.push(player2.shift());
                    drawn.push(player1.shift());
                    drawn.push(player2.shift());
                    console.log("tie")
                    draw(drawn);
                }

                document.getElementById('player1score').innerHTML = player1.length 
                document.getElementById('player2score').innerHTML = player2.length 
                // thePlayer.redrawHand();
                // thePlayer.checkHand();

            }
            function reset(){
                document.location.href = document.location.href;

            }

            function instructions(){

            }
            /**
             * Card class
             * Defines the data associated with a card, including
             * the DOM object for an image tag to represent the card
             * @params:
             * ordValue    int     Ordered integer value of a card (0-51?)
             * value       str     String for the value of the card
             * suit        str     String for the suit of the card
             * display     bool    Whether to add the image to the DOM
             */
            function Card(ordValue, value, suit, display){
                this.value = value;
                this.suit = suit;
                this.numbervalue = 0;
                this.isFaceUp = true;
                this.img = document.createElement('img');
                this.img.className = "card";
                this.imgSrcFront = "img/"+value+"."+suit+".jpg";   //image source for card
                this.imgSrcBack = "img/back.jpg";
                this.img.src = this.imgSrcFront;    //default face up
                if(display==true){
                    document.body.appendChild(this.img);
                }

                switch(value){

                    case "two":this.numbervalue = 2; break;
                    case "three":this.numbervalue = 3; break;
                    case "four":this.numbervalue = 4; break;
                    case "five":this.numbervalue = 5; break;
                    case "six":this.numbervalue = 6; break;
                    case "seven":this.numbervalue = 7; break;
                    case "eight":this.numbervalue = 8; break;
                    case "nine":this.numbervalue = 9; break;
                    case "ten":this.numbervalue = 10; break;
                    case "jack":this.numbervalue = 11; break;
                    case "queen":this.numbervalue = 12; break;
                    case "king":this.numbervalue = 13; break;
                    case "ace":this.numbervalue = 14; break;
                }

                //give the card image a handle back to the object for events
                this.img.cardObj = this;

                this.show = function(offset){
                    document.body.appendChild(this.img);
                }

                this.hide = function(){
                    this.img.parentNode.removeChild(this.img);
                }

                this.flip = function(){
                    if(this.isFaceUp==true){     //card is up, show back to flip over
                        this.img.src = this.imgSrcBack;
                        this.isFaceUp = false;
                    } else {                     //card is down, flip over front
                        this.img.src = this.imgSrcFront;
                        this.isFaceUp = true;
                    }
                }
            }

            /**
             * Deck class
             * defines the data and methods of the deck
             * includes some game-specific structures, like
             * the inPlay array and knowing what the current
             * card in play is.
             */
            function Deck(){                
                //make data arrays
                this.deck = [];
                this.inPlay = [];
                this.currentCard = false;    //one card, not an array     

                //this is the function that constructs a new deck
                //it will automatically be called when new Deck() is
                //called
                this.construct = function(){
                    for(var i=0; i<suits.length; i++){
                        for(var j=0; j<values.length; j++){
                            var newCard = new Card(j+i*j, values[j], suits[i], false);
                            this.deck.push(newCard);
                        }
                    }
                    this.shuffle();
                }

                //Shuffles the deck
                this.shuffle = function(){
                    for(var i=this.deck.length-1; i>0; i--){
                        var card = Math.floor(Math.random()*this.deck.length);
                        var temp = this.deck[i];
                        this.deck[i] = this.deck[card];
                        this.deck[card] = temp;
                    }
                }

                //Draws a card from the deck
                //Drawing a card means taking the top card out of the deck
                //array and returning it.
                this.draw = function(){
                    if(this.deck.length > 0) return this.deck.pop();
                    return false;
                }

                //Now that all the methods are defined, call construct
                this.construct();
            }            
        </script>

        <title>War</title>
    </head>
    <body onload="init()"> <style>     

    .background{    
    background-color: green
            }
</style>
    <img src="img/start.png" id="startbutton" />
    <img src="img/war.jpg" id="title" />
    <img src="img/reset.png" id="resetbutton" />
    <div id="player1score"></div>
    <div id="player2score"></div>
    </body>

 </html>

Leave a Reply