⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 player.java

📁 一个非常不错的java纸牌游戏源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				String cardno2 = otherplayermsg.substring(varlength2 + 1,
						varlength3);
				if (cardno2.equals("multi")) {
					burn = faceupmulti(otherplayermsg, varlength3, playernumber);
				} else {
					try {
						Card card = new Card(Integer.parseInt(cardno2),
								cardspic, sh, g);
						//adding card to pile
						for (int n = 51; n > 0; n--)
							pile[n] = pile[n - 1];
						pile[0] = card;
						//burning pile if a 10 is played
						if (pile[0].getValue() == 10
								|| fourOfAKind(pile[3]) == true) {
							burnt = true;
							burn = true;
							//removing cards from pile
							sh.addMsg(name + " burnt the pile.");
							for (int n = 0; n < 51; n++)
								pile[n] = null;
						}
						//removing card from table
						for (int n = 0; n < 3; n++)
							if (faceup[playernumber][n] != null)
								if (faceup[playernumber][n].getNumber() == card
										.getNumber()) {
									faceup[playernumber][n] = null;
									break;
								}
					} catch (NumberFormatException b) {
						sh.addMsg("Otherplayer - variable to Int error: " + b);
					}
				}
			} else if (cardno.equals("facedown")) {//if player plays one of there face down cards
				int varlength3 = 0;
				for (int n = varlength2 + 1; n < otherplayermsg.length(); n++) {
					char extract = otherplayermsg.charAt(n);
					if (extract == (':')) {
						varlength3 = n;
						break;
					}
				}
				String cardno2 = otherplayermsg.substring(varlength2 + 1,
						varlength3);
				if (cardno2.equals("pickup")) {
					for (int n = varlength3 + 1; n < otherplayermsg.length(); n++) {
						char extract = otherplayermsg.charAt(n);
						if (extract == (':')) {
							varlength2 = n;
							break;
						}
					}
					String cardplayed = otherplayermsg.substring(
							varlength3 + 1, varlength2);
					int numPlayed = 0;
					try {
						numPlayed = Integer.parseInt(cardplayed);
					} catch (NumberFormatException b) {
						sh
								.addMsg("processTurn - facedown pickup - variable to Int error: "
										+ b);
					}
					cardcount[playernumber] = cardcount[playernumber]
							+ pilelength() + 1;
					for (int n = 0; n < 52; n++)
						pile[n] = null;
					sh.addMsg(othernames[playernumber] + " played a "
							+ Card.getCardStringValue(numPlayed)
							+ " and had to picked up the pile");
				} else {
					try {
						Card card = new Card(Integer.parseInt(cardno2),
								cardspic, sh, g);
						for (int n = 51; n > 0; n--)
							pile[n] = pile[n - 1];
						pile[0] = card;
						//burning pile if a 10 is played
						if (pile[0].getValue() == 10
								|| fourOfAKind(pile[3]) == true) {
							burnt = true;
							burn = true;
							//removing cards from pile
							sh.addMsg(name + " burnt the pile.");
							for (int n = 0; n < 51; n++)
								pile[n] = null;
						}
					} catch (NumberFormatException b) {
						sh.addMsg("Otherplayer - variable to Int error: " + b);
					}
				}
				carddowncount[playernumber]--;
			} else if (cardno.equals("multi")) {//if more than 1 card is played at a time
				//determining how many card where played
				int varlength3 = 0;
				for (int n = varlength2 + 1; n < otherplayermsg.length(); n++) {
					char extract = otherplayermsg.charAt(n);
					if (extract == (':')) {
						varlength3 = n;
						break;
					}
				}
				String numPlayedString = otherplayermsg.substring(
						varlength2 + 1, varlength3);
				//converting string to int for processing
				int numPlayed = 0;
				try {
					numPlayed = Integer.parseInt(numPlayedString);
				} catch (NumberFormatException b) {
					sh.addMsg("processTurn - multi - variable to Int error: "
							+ b);
				}
				for (int n = 0; n < numPlayed; n++) {
					varlength2 = varlength3;
					//determining how many card where played
					varlength3 = 0;
					for (int i = varlength2 + 1; i < otherplayermsg.length(); i++) {
						char extract = otherplayermsg.charAt(i);
						if (extract == (':')) {
							varlength3 = i;
							break;
						}
					}
					String cardnoString = otherplayermsg.substring(
							varlength2 + 1, varlength3);
					//converting string to int for processing
					try {
						Card card = new Card(Integer.parseInt(cardnoString),
								cardspic, sh, g);
						addcardtopile(card);
					} catch (NumberFormatException b) {
						sh
								.addMsg("processTurn - multi - variable to Int error: "
										+ b);
					}

					if (deck == 0 || cardcount[playernumber] > 3) {
						if (cardcount[playernumber] > 0)
							cardcount[playernumber]--;
					} else
						deck--;
				}

				//burning pile if a 10 is played or 4 of a kind
				if (pile[0].getValue() == 10 || fourOfAKind(pile[3]) == true) {
					burnt = true;
					burn = true;
					//removing cards from pile
					sh.addMsg(name + " burnt the pile.");
					for (int i = 0; i < 51; i++)
						pile[i] = null;
				}

			} else {
				//adding card to pile
				try {
					Card card = new Card(Integer.parseInt(cardno), cardspic,
							sh, g);
					for (int n = 51; n > 0; n--)
						pile[n] = pile[n - 1];
					pile[0] = card;
					//burning pile if a 10 is played
					if (pile[0].getValue() == 10
							|| fourOfAKind(pile[3]) == true) {
						burn = true;
						burnt = true;
						//removing cards from pile
						sh.addMsg(name + " burnt the pile.");
						for (int n = 0; n < 51; n++)
							pile[n] = null;
					}
				} catch (NumberFormatException b) {
					sh.addMsg("Otherplayer else - variable to Int error: " + b);
				}
				if (deck == 0 || cardcount[playernumber] > 3) {
					if (cardcount[playernumber] > 0)
						cardcount[playernumber]--;
				} else
					deck--;
			}
			if (!burn)
				nextTurn();
			displayTable();
		}

		private boolean faceupmulti(String otherplayermsg, int varlength2,
				int playernumber) {
			boolean burn = false;
			//determining how many card where played
			int varlength3 = 0;
			for (int n = varlength2 + 1; n < otherplayermsg.length(); n++) {
				char extract = otherplayermsg.charAt(n);
				if (extract == (':')) {
					varlength3 = n;
					break;
				}
			}
			String numPlayedString = otherplayermsg.substring(varlength2 + 1,
					varlength3);
			//converting string to int for processing
			int numPlayed = 0;
			try {
				numPlayed = Integer.parseInt(numPlayedString);
			} catch (NumberFormatException b) {
				sh
						.addMsg("processTurn - multi face up - variable to Int error: "
								+ b);
			}
			for (int n = 0; n < numPlayed; n++) {
				varlength2 = varlength3;
				//determining how many card where played
				varlength3 = 0;
				for (int i = varlength2 + 1; i < otherplayermsg.length(); i++) {
					char extract = otherplayermsg.charAt(i);
					if (extract == (':')) {
						varlength3 = i;
						break;
					}
				}
				String cardnoString = otherplayermsg.substring(varlength2 + 1,
						varlength3);
				//converting string to int for processing
				try {
					Card card = new Card(Integer.parseInt(cardnoString),
							cardspic, sh, g);
					addcardtopile(card);

					for (int i = 0; i < 3; i++)
						if (faceup[playernumber][i] != null)
							if (faceup[playernumber][i].getNumber() == card
									.getNumber()) {
								faceup[playernumber][i] = null;
								break;
							}
				} catch (NumberFormatException b) {
					sh.addMsg("processTurn - multi - variable to Int error: "
							+ b);
				}

			}
			//burning pile if a 10 is played or 4 of a kind
			if (pile[0].getValue() == 10 || fourOfAKind(pile[3]) == true) {
				burnt = true;
				burn = true;
				//removing cards from pile
				sh.addMsg(othernames[playernumber] + " burnt the pile.");
				for (int i = 0; i < 51; i++)
					pile[i] = null;
			}
			return burn;
		}

		private void yourturn() {
			//making sure turn arrow is pointed correctly
			if (whosturn != 3) {
				whosturn = 3;
				displayTable();
			}

			int top = 0;
			//testing is player has a card they can play
			if (pile[0] != null) {
				boolean canplay = false;
				if (hand.getCard(0) == null) {//if player only has card on the table
					if (hand.isFaceUp())//if player has faceup card on the table
					{
						for (int n = 0; n < 3; n++) {
							if (hand.getFaceUp(n) != null) {
								if (nine == true && pile[0].getValue() == 9) {
									top = 0;
									for (int i = 0; i < 52; i++) {
										if (pile[i] == null) {
											canplay = true;
											break;
										}
										if (pile[i].getValue() == 9)
											top++;
										else
											break;
									}
								}
								if (canplay)
									break;
								if (seven == true && pile[top].getValue() == 7
										&& hand.getFaceUp(n).getValue() < 7) {
									canplay = true;
									break;
								} else if (hand.getFaceUp(n).getValue() == 2
										|| hand.getFaceUp(n).getValue() == 10) {
									canplay = true;
									break;
								} else if (nine == true
										&& hand.getFaceUp(n).getValue() == 9) {
									canplay = true;
									break;
								} else if (seven != true
										|| pile[top].getValue() != 7) {
									if (pile[top].getValue() <= hand.getFaceUp(
											n).getValue()) {
										canplay = true;
										break;
									}
								}
							}
						}
					} else
						//if player only has facedown cards
						canplay = true;
				} else {
					for (int n = 0; n < hand.length() - 1; n++) {
						if (hand.getCard(n) == null)
							break;
						if (nine == true && pile[0].getValue() == 9) {
							top = 0;
							for (int i = 0; i < 52; i++) {
								if (pile[i] == null) {
									canplay = true;
									break;
								}
								if (pile[i].getValue() == 9)
									top++;
								else
									break;
							}

						}
						if (canplay)
							break;
						if (hand.getCard(n).getValue() == 2
								|| hand.getCard(n).getValue() == 10) {
							canplay = true;
							break;
						}
						if (nine == true && hand.getCard(n).getValue() == 9) {
							canplay = true;
							break;
						}
						if (seven == true && pile[top].getValue() == 7
								&& hand.getCard(n).getValue() < 7) {
							canplay = true;
							break;
						} else if (seven != true || pile[top].getValue() != 7) {
							if (pile[top].getValue() <= hand.getCard(n)
									.getValue()) {
								canplay = true;
								break;
							}
						}
					}
				}
				if (canplay) {
					//sh.addMsg("Its Your Turn");
					sh.setmyTurn(true);
				} else {//cant play then must pick up the pile
					sh.addMsg("The card played was a "
							+ pile[top].getStringValue()
							+ " you had to pick up the pile");
					for (int n = 0; n < 52; n++) {
						if (pile[n] == null)
							break;
						hand.addCard(pile[n]);
						pile[n] = null;
					}
					sendCommand("turn:pickup:");
					nextTurn();
					displayTable();
				}
			} else {
				//sh.addMsg("Its Your Turn");
				sh.setmyTurn(true);
			}
		}

		private void getcard(String otherplayermsg, int commandlength) {
			//decode variable that came with message
			int varlength = 0;
			for (int n = commandlength + 1; n < otherplayermsg.length(); n++) {
				char extract = otherplayermsg.charAt(n);
				if (extract == (':')) {
					varlength = n;
					break;
				}
			}
			String variable = otherplayermsg.substring(commandlength + 1,
					varlength);

			//Adding card to hand
			try {
				Card card = new Card(Integer.parseInt(variable), cardspic, sh,
						g);
				hand.addCard(card);
			} catch (NumberFormatException b) {
				sh.addMsg("Deal - variable to Int error: " + b);
			}
			deck--;
			displayTable();
		}

		private void deal(String otherplayermsg, int commandlength) {
			//decode variable that came with message
			int varlength = 0;
			for (int n = commandlength + 1; n < otherplayermsg.length(); n++) {
				char extract = otherplayermsg.charAt(n);
				if (extract == (':')) {
					varlength = n;
					break;
				}
			}
			String variable = otherplayermsg.substring(commandlength + 1,
					varlength);

			//Adding card to deck
			try {
				Card card = new Card(Integer.parseInt(variable), cardspic, sh,
						g);
				hand.deal(card);
			} catch (NumberFormatException b) {
				sh.addMsg("Deal - variable to Int error: " + b);
			}

		}

		//getting the details of other players
		private void otherdetails(String otherplayermsg, int commandlength) {
			//decode variable that came with message
			String variables[] = new String[12];
			for (int i = 0; i < 12; i++) {
				int varlength = 0;
				for (int n = commandlength + 1; n < otherplayermsg.length(); n++) {
					char extract = otherplayermsg.charAt(n);
					if (extract == (':')) {
						varlength = n;
						break;
					}
				}
				variables[i] = otherplayermsg.substring(commandlength + 1,
						varlength);
				commandlength = varlength;
			}

			//adding other players details to storage arrays
			for (int n = 0; n < 3; n++) {
				othernames[n] = variables[4 * n];
				score.addName(variables[4 * n]);
				//sh.addMsg("Test - othername " + othernames[n] + " severname " + servername);//--------------------TEST
				if (othernames[n].equals(servername))
					whosturn = n;
				cardcount[n] = 3;
				carddowncount[n] = 3;
				try {
					for (int i = 0; i < 3; i++) {
						Card card = new Card(Integer.parseInt(variables[4 * n
								+ 1 + i]), cardspic, sh, g);
						faceup[n][i] = card;
					}
				} catch (NumberFormatException b) {
					sh.addMsg("otherdetails - variable to Int error: " + b);
				}
			}
			deck = 16;
			if (fastgame)
				deck = 0;
			displayTable();
			if (swap == true && swapdone == false) {//if performing card swap
				Card inhand[] = new Card[3];
				Card ontable[] = new Card[3];
				for (int n = 0; n < 3; n++) {
					inhand[n] = hand.getCard(n);
					ontable[n] = hand.getFaceUp(n);
				}
				SwapD swapD = new SwapD(sh, inhand, ontable);
				if (swapD.display()) {
					inhand = swapD.getInHand();
					ontable = swapD.getOnTable();
					hand.swap(inhand, ontable);
					displayTable();
				}
				sendCommand("swap:" + inhand[0].getNumber() + ":"
						+ inhand[1].getNumber() + ":" + inhand[2].getNumber()
						+ ":" + ontable[0].getNumber() + ":"
						+ ontable[1].getNumber() + ":" + ontable[2].getNumber()
						+ ":");
				swapdone = true;
			}
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -