Jag har inte börjat definera Deck ännu, då jag ville se ifall jag kunde slippa använda mig av ärvd konstruktor mest för att den stör min planering.
Till och börja med kan jag säga att jag är en "Hobby" programmerare. Jag har varken skolats eller jobbat med det, även om det är vad jag vill i framtiden. Så jag saknar lärdom i struktur, tänk och även företags programmering. Däremot är det något jag tänker ändra på genom att ta en utbildning som kan komplettera mitt försummande av struktur.
När jag tar mig an en utmaning finns det två alternativ, antingen löser jag en uppgifter eller så gör jag det inte. Vilket verktyg jag använder för att lösa är strunt samma.
Jag satte upp ett mål för mig själv att skapa ett virtuellt kort. Senare är tanken att jag ska kunna samla dessa virtuella kort och skapa en kortlek. En kortlek kan te sig på olika sätt, och därför vill jag att den som använder kortleken ska ha friheten att antingen kunna ha en standard kortlek eller en egengjord (bara 10or, 1-10, knäckt-Kung, Ess 1;11 Etc). I ett senare skedde kan jag tänka mig göra spel kortspel, black jack, poker, hold'em osv.
Här är koden för mitt kort. Jag kommer förmodligen addera flera metoder, men just nu räcker det med det jag har skapat.
import java.util.*;
public class Card {
private Random rnd = new Random();
private String suit;
private int rank;
//////////////////////////////////////////
//
// Add a new Card Object. You may add and change values.
//
//////////////////////////////////////////
public Card (String suit, int rank)
{
this.suit = suit;
this.rank = rank;
}
public String getSuit(Card card)
{
return card.suit;
}
public void setSuit(Card card, String suit)
{
card.suit = suit;
}
public int getRank(Card card)
{
return card.rank;
}
/**
* setRank(Card card, int rank)
*/
public void setRank(Card card, int rank)
{
card.rank = rank;
}
/**
*
* Preferable values for max and min is 14 and 0 which will give a range of 1-14 [Ace = 1 or 14]
*
* @return Card (String suit, int rank), suit is random from a list with 4 values Heart, Diamond, Club and Spade. Rank is ( rnd.nextInt (max)+min)
* @param min returns error if min is < 0
* @param max the max value the card can be.
*
*/
public Card randomCard(int max, int min) {
// Create a list of suits
String [] list = {"Heart", "Diamond", "Club", "Spade"};
// Return a random suit and a random number
return new Card( list[rnd.nextInt(4)] , (rnd.nextInt(max)+1+min) );
}
}
En kortlek behöver kort och därför önskar jag att Deck ärver kort, då den behöver använda dessa funktioner. Jag kan tänka mig att istället för ärva skapa separata kort objekt ( Card king = new Card("Club", 13); ), men jag vill helst lära mig mer hur arv fungerar och integreras i kod.
Exempel,
Card -> Deck -> Black Jack
Card -> War
Deck -> Något annat.
Jag har bara skrivit ut vilka metoder som jag önskar ha i Deck classen men så här ser början ut.
import java.util.LinkedHashMap;
import java.util.Map;
public class Deck extends Card {
private Map<Card, Integer> deck = new LinkedHashMap<Card, Integer>();
private int count = 0;
//////////////////////////////////////////
//
// Add cards to a Deck
//
//////////////////////////////////////////
public Deck(Card card)
{
super(card.getSuit(card), card.getRank(card));
container (card, count);
}
public void customDeck()
{
}
public void container (Card card, int count)
{
deck.put(card, count);
count++;
}
public void resetDeck ()
{
}
//////////////////////////////////////////
//
// Deck Functions
//
//////////////////////////////////////////
public Map<Card, Integer> getDeck() {
return deck;
}
public void setDeck(Map<Card, Integer> deck) {
this.deck = deck;
}
public void suitInDeck ()
{
}
public void rankInDeck ()
{
}
public void sizeOfDeck()
{
}
public void sortDeck ()
{
}
}
Jag har döpt metoden till container, men tanken var att container egentligen skulle vara handen, och att för varje kort som adderas till container så ökas antalet. Min tanke var att använda getters/setters för att ta ut objekt ur container. Helst skulle jag inte vilja att det skapades en konstruktor, då jag vill använda annan metod för att samla min kortlek, men om jag inte får bort konstruktorn får jag jobba med det och se vad det kan erbjuda.
För att komma tillbaka till ämnet, kan jag använda extends utan att behöva ärva Card konstruktor eller måste jag köra utan extends i klassen Deck för att kunna få min vilja fylld?
Tack för att ni tar er tid och assistans. Uppskattas mycket då jag annars sitter i mina egna tankebanor. Jag vill även tillägga att min kod kanske får era ögon att blöda, men det är strunt samma. Jag älskar att utveckla och innan jag lär mig korrekt tänker jag lösa mina utmaningar innanför och utanför boxen.