【发布时间】:2017-08-20 16:09:17
【问题描述】:
public class Game {
private ArrayList<Player> players;
private ArrayList<Card> deck;
private ArrayList<Card> pool;
**private ArrayList<Capture> capture;**
private int currentPlayer;
private int playDirection;
int index;
int count = 0;
int passNo = 0;
Scanner input = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
Scanner input3 = new Scanner(System.in);
public Game()
{
deck = new ArrayList<Card>();
pool = new ArrayList<Card>();
capture = new ArrayList<Capture>();
for(int c=0; c<4; c++){
for(int i=0; i<13; i++){
deck.add(new Card(c,i));
}
Collections.shuffle(deck);
}
}
public Player play() {
Player player = getCurrentPlayer();
int pass = -1;
int option =0;
int count =0;
boolean play = false;
boolean check = true;
capture = new ArrayList<Capture>();
System.out.println();
System.out.println(player + ":" + player.getCards());
do{
System.out.println("Please select an option: ((1) Capture (2) Discard a card)");
option = input2.nextInt();
play=player.isPlayable();
switch(option)
{
case 1:
if(play == true){
System.out.print("HandCard:" + player.getCards());
System.out.print(" Choose a Number from 0 to " + (player.getCards().size()-1)+ " : ");
int num = input.nextInt();
player.getCards().remove(num);
//after prompting user for entering the cards they wanted
//the following sentence has following error
**capture.add(player.getCards().get(num));**
//"The method add(Capture) in the type ArrayList<Capture> is
//not applicable for the arguments (Card)"
System.out.print("How many card you want capture from pool: (Choose 1 number from 1 to " + pool.size()+ ")" + " : ");
option = input.nextInt();
System.out.println("Please choose your card in the pool:");
System.out.println("Pool");
for(int j=0; j<pool.size(); j++)
{
System.out.print("(" + j + ")" + pool.get(j) + " ");
}
for(int i=0; i<option;i++)
{
count = input.nextInt();
System.out.print(pool.get(count) + " ");
pool.remove(count);
//same problem as the above error
**capture.add(pool.get(count));**
}
System.out.print(player.getCards().get(num) + " is selected");
System.out.println();
System.out.println("=================================================");
check=false;
}
else
System.out.println("Invalid Capture, Please choose either (1) Capture or (2) Discard a Card");
break;
case 2:
if(play == true){
Card discard = player.cardDiscard();
System.out.println(discard + " has been added to pool");
pool.add(discard);
player.removeCard(discard);
check=false;
}
else
System.out.println("Invalid Capture Please choose either (1) Capture or (2) Discard a Card");
break;
default:
System.out.println("Invalid option choose");
}
}while(check);
if(pass==currentPlayer)
{
passNo++;
}
else{
passNo = 0;
}
if(player.getCards().size() == 0 ){
int i = 1;
int [] point = new int[players.size()+1];
point[0] = 100;
int lowest = 0;
System.out.println();
for(Player p : players){
System.out.println(p + ":" + p.getTotalScores() + " points");
point[i] = p.getTotalScores();
if(point[i] < point[i-1]){
lowest = point[i];
}
i++;
}
for(Player p:players){
if(p.getTotalScores()==lowest)
{
player = p;
}
}
return player;
}
goToNextPlayer();
System.out.println();
System.out.println("=========================================================================");
System.out.println("Pool");
for(int i=0; i<pool.size(); i++)
System.out.print("(" + i + ")" + pool.get(i) + " ");
return null;
}
//捕获类 导入 java.util.ArrayList;
public abstract class Capture {
private static ArrayList<Capture> capture;
private static ArrayList<Card> card;
boolean result = false;
public Capture()
{
// leave bank
}
// this part is the functions that hv to implement in pair , run , combo class
public abstract boolean formCapture(ArrayList<Capture> c);
public abstract double getScore();
public abstract void showMessage();}
很抱歉这篇长文,但我的问题在于评论的部分,出现的错误使我无法将玩家手牌和台球牌添加到 ArrayList<Capture> Capture 列表中,但此列表无法删除,因为它正在使用在另一个类中检测其他子类使用的其他特征。如何解决错误并将 arraylist 捕获添加到新类型的数组列表中?
**已编辑,已添加 Capture 类但尚未完成
【问题讨论】:
-
Capture和Card是什么关系? -
您只能添加 List
与 Capture 成员函数。 -
是否要将 Card 后代添加到 ArrayList
?是否也捕获 Capture 的后代?因为您可以将 so 对象添加到类型符合(它们具有共同祖先或共同接口)到列表项类型的通用列表中。 -
请给出 Capture 类的代码
-
没有为您提供任何答案所需的信息?