Android Open Source - AndroSol Android Game Board






From Project

Back to project page AndroSol.

License

The source code is released under:

MIT License

If you think the Android project AndroSol listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.example.androsol;
//  ww w .  ja v a 2s  . c o  m
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

import lib.cards.models.Card;
import lib.cards.models.CardStack;
import lib.cards.models.Game.NewGameListener;
import lib.cards.models.GameEventObject;
import lib.cards.models.GameProperties;
import lib.cards.models.GameState;
import lib.cards.utilities.Point;
import lib.cards.views.CardSprite;
import lib.cards.views.GameBoardImpl;
import lib.cards.views.Sprite;
import lib.cards.views.SpriteEventObject;
import lib.cards.views.StackSprite;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.widget.FrameLayout;

public class AndroidGameBoard extends GameBoardImpl<Bitmap> implements
        GameSurface.Drawable {
    GameSurface surface;

    public AndroidGameBoard(FrameLayout frame) {
        this.surface = new GameSurface(this, this, frame.getContext());
        frame.addView(this.surface);
        this.getGame().getNewGameEvent().add(new NewGameListener() {

            @Override
            public void onNewGameAction(GameEventObject game) {
                draw();
            }
        });
        this.getSpriteSelectedEvent().add(new SpriteSelectedListener() {
            @Override
            public void onSpriteSelected(SpriteEventObject args) {
                draw();
            }
        });
        this.getSpriteDefaultActionEvent().add(
                new SpriteDefaultActionListener() {
                    @Override
                    public void onSpriteDefaultAction(SpriteEventObject args) {
                        draw();
                    }

                });
    }

    public void draw() {
        this.surface.draw();
    }

    // GameSurface.Drawable
    @Override
    public void draw(Canvas canvas) {
        for (Sprite s : this.getSprites()) {
            ((GameSurface.Drawable) s).draw(canvas);
        }
    }

    @Override
    protected void doMoveCardAnimation(CardStack cards, Point delta) {
        this.layoutBoard();
        this.draw();
    }

    @Override
    protected void doMoveCardAnimation(GameState oldState, GameState newState) {
        // TODO Auto-generated method stub
        this.layoutBoard();
        this.draw();
    }

    @Override
    public StackSprite addStackSprite(CardStack stack, Bitmap cardImage) {
        StackSprite sprite = new StackSpriteImpl(stack, cardImage);
        stackSprites.put(stack, sprite);
        return sprite;
    }

    @Override
    public CardSprite addCardSprite(Card card, Bitmap cardImage) {
        CardSprite sprite = new CardSpriteImpl(card, cardImage);
        cardSprites.put(card, sprite);
        return sprite;
    }

    HashMap<Card, CardSprite> cardSprites = new HashMap<Card, CardSprite>();
    HashMap<CardStack, StackSprite> stackSprites = new HashMap<CardStack, StackSprite>();

    @Override
    public void deleteSprite(Sprite sprite) {
        if (CardSprite.class.isAssignableFrom(sprite.getClass())) {
            cardSprites.remove(((CardSprite) sprite).getCard());
        } else if (StackSprite.class.isAssignableFrom(sprite.getClass())) {
            stackSprites.remove(((StackSprite) sprite).getStack());
        } else {
            throw new RuntimeException(
                    "Sprite must be either card sprite or stack sprite.");
        }
    }

    /**
     * In android, the drawing will take place elsewhere. Instead, this just
     * sets the index and position.
     */
    @Override
    protected void layoutCard(Card card, Point position, int zIndex) {
        Sprite sprite = cardSprites.get(card);
        sprite.setPosition(position);
        sprite.setZOrder(zIndex);
    }

    @Override
    public GameProperties getGameProperties() {
        return getGame().getGameProperties();
    }

    public Sprite hitTest(Point eventPoint) {
        List<Sprite> sprites = getSprites();
        Collections.reverse(sprites);
        for (Sprite s : sprites) {
            if (s.isVisibile() && s.getRect().Contains(eventPoint)) {
                return s;
            }
        }
        return null;
    }
}




Java Source Code List

com.example.androsol.AndroidDeck.java
com.example.androsol.AndroidGameBoard.java
com.example.androsol.CardSpriteImpl.java
com.example.androsol.DeckTheme.java
com.example.androsol.DisplayMessageActivity.java
com.example.androsol.GameSurface.java
com.example.androsol.MainActivity.java
com.example.androsol.SpriteImpl.java
com.example.androsol.StackSpriteImpl.java
com.example.androsol.StandardDeck.java
lib.cards.controllers.Actions.java
lib.cards.controllers.DealAction.java
lib.cards.controllers.GameActionState.java
lib.cards.controllers.GameAction.java
lib.cards.controllers.GameController.java
lib.cards.controllers.NewGameActionState.java
lib.cards.controllers.NewGameAction.java
lib.cards.controllers.StackMoveAction.java
lib.cards.controllers.StackMoveState.java
lib.cards.models.CardColor.java
lib.cards.models.CardStackId.java
lib.cards.models.CardStack.java
lib.cards.models.CardState.java
lib.cards.models.CardSuit.java
lib.cards.models.CardValue.java
lib.cards.models.Card.java
lib.cards.models.CardsMovedEventHandler.java
lib.cards.models.CardsMovedEventObject.java
lib.cards.models.EmptyTableauPileFilledBy.java
lib.cards.models.EventHandler.java
lib.cards.models.FoundationBaseCard.java
lib.cards.models.FoundationSequence.java
lib.cards.models.Foundation.java
lib.cards.models.FreeCell.java
lib.cards.models.GameEventObject.java
lib.cards.models.GameOverEventHandler.java
lib.cards.models.GameOverEventObject.java
lib.cards.models.GameProperties.java
lib.cards.models.GameState.java
lib.cards.models.Game.java
lib.cards.models.MoveGroupsOfCardsAsAUnit.java
lib.cards.models.NewGameEventHandler.java
lib.cards.models.NumberOfCardsDealtFromStock.java
lib.cards.models.RedealsAllowed.java
lib.cards.models.RestoreGameEventHandler.java
lib.cards.models.ScoreChangedEventHandler.java
lib.cards.models.ScoreChangedEventObject.java
lib.cards.models.StackType.java
lib.cards.models.Stock.java
lib.cards.models.SubStackMovedEventHandler.java
lib.cards.models.SubStackMovedEventObject.java
lib.cards.models.SubStack.java
lib.cards.models.TableauSequence.java
lib.cards.models.TableauType.java
lib.cards.models.Tableau.java
lib.cards.models.Waste.java
lib.cards.utilities.CollectionUtils.java
lib.cards.utilities.CommandImpl.java
lib.cards.utilities.Command.java
lib.cards.utilities.Point.java
lib.cards.utilities.Rect.java
lib.cards.utilities.Size.java
lib.cards.utilities.UndoStack.java
lib.cards.views.CardSprite.java
lib.cards.views.DeckMetrics.java
lib.cards.views.Deck.java
lib.cards.views.GameBoardImpl.java
lib.cards.views.GameBoardMetrics.java
lib.cards.views.GameBoard.java
lib.cards.views.SpriteAddedEventHandler.java
lib.cards.views.SpriteDefaultActionEventHandler.java
lib.cards.views.SpriteEventObject.java
lib.cards.views.SpriteRemovedEventHandler.java
lib.cards.views.SpriteSelectedEventHandler.java
lib.cards.views.Sprite.java
lib.cards.views.StackSprite.java