📄 septon
字号:
XX public void setCardFlag()X {X cardFlag = true;X }XX public void clearCardFlag()X {X cardFlag = false;X }XX public boolean getCardFlag()X {X return cardFlag;X }X X // Called when this occupies pl's last territory.X public void vanquished(Player pl)X {X // Take the player's cards.X pile.addPile(pl.getPile());XX // Check to see if we've won the game.X if (countries.size() == Country.NUM_COUNTRIES) {X System.out.println(name + " wins!");X System.exit(0);X }X }}SHAR_EOF $shar_touch -am 1210132596 'Player.java' && chmod 0644 'Player.java' || $echo 'restore of' 'Player.java' 'failed' if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'Player.java:' 'MD5 check failed'7d4eb58698f45b5fe8206e2d70614af0 Player.javaSHAR_EOF else shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'Player.java'`" test 4110 -eq "$shar_count" || $echo 'Player.java:' 'original size' '4110,' 'current size' "$shar_count!" fifi# ============= Pile.java ==============if test -f 'Pile.java' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'Pile.java' '(file already exists)'else $echo 'x -' extracting 'Pile.java' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'Pile.java' &&// CS 582 - Fall 1996 - OSU// Jean-Guy SpetonXimport java.util.*;Xpublic class Pile{X protected Vector cards;XX public Pile()X {X cards = new Vector();X }X X public void addCard(Card c)X {X cards.addElement(c);X }XX public void addPile(Pile p)X {X while (p.size() > 0) {X Card c = p.removeCardAt(0);X addCard(c);X }X }X X public Card cardAt(int i)X {X return (Card)cards.elementAt(i);X }XX public Card removeCardAt(int i)X {X Card c = (Card)cards.elementAt(i);X cards.removeElementAt(i);X return c;X }X X public Enumeration elements()X {X return cards.elements();X }XX public int size()X {X return cards.size();X }}SHAR_EOF $shar_touch -am 1210132596 'Pile.java' && chmod 0644 'Pile.java' || $echo 'restore of' 'Pile.java' 'failed' if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'Pile.java:' 'MD5 check failed'31e72ae43a6475a0b0dadf97a2151ba6 Pile.javaSHAR_EOF else shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'Pile.java'`" test 686 -eq "$shar_count" || $echo 'Pile.java:' 'original size' '686,' 'current size' "$shar_count!" fifi# ============= DrawPile.java ==============if test -f 'DrawPile.java' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'DrawPile.java' '(file already exists)'else $echo 'x -' extracting 'DrawPile.java' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'DrawPile.java' &&// CS 582 - Fall 1996 - OSU// Jean-Guy SpetonXimport java.util.*;Xpublic class DrawPile extends Pile{X public DrawPile()X {X for (int i = 0; i < Card.NUM_CARDS; i++) {X addCard(new Card(i));X }X shuffle();X }XX public Card drawTopCard()X {X if (size() > 0) {X return removeCardAt(0);X }X else {X return null;X }X }XX public void shuffle()X {X Vector v = new Vector(cards.size());X Random rand = new Random();XX while (cards.size() > 0) {X int i = Math.abs(rand.nextInt()) % cards.size();X Object o = cards.elementAt(i);X cards.removeElementAt(i);X v.addElement(o);X }XX cards = v;X }}SHAR_EOF $shar_touch -am 1210132596 'DrawPile.java' && chmod 0644 'DrawPile.java' || $echo 'restore of' 'DrawPile.java' 'failed' if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'DrawPile.java:' 'MD5 check failed'07c2b3ad93b040c367eca3ee94529d78 DrawPile.javaSHAR_EOF else shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'DrawPile.java'`" test 670 -eq "$shar_count" || $echo 'DrawPile.java:' 'original size' '670,' 'current size' "$shar_count!" fifi# ============= Card.java ==============if test -f 'Card.java' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'Card.java' '(file already exists)'else $echo 'x -' extracting 'Card.java' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'Card.java' &&// CS 582 - Fall 1996 - OSU// Jean-Guy SpetonXimport java.awt.*;Xpublic class Card{X // Number of cards in a complete deck. Specifically, one for eachX // country plus 2 wild cards.X public static int NUM_CARDS;XX // Designs and countries of each card.X private static int designs[];X private static int countries[];X X public final static int ARTILLERY = 0;X public final static int CAVALRY = 1;X public final static int INFANTY = 2;X public final static int WILD = 3;XX private static String designNames[] = {X "Artillery", "Cavalry", "Infantry", "*Wild*"X };X private static String countryNames[];X X // Static initializer.X staticX {X NUM_CARDS = Country.NUM_COUNTRIES + 2;XX designs = new int[NUM_CARDS];X countries = new int[NUM_CARDS];X countryNames = new String[NUM_CARDS];XX for (int i = 0; i < Country.NUM_COUNTRIES; i++) {X designs[i] = i % 3;X countries[i] = i;X countryNames[i] = Country.getName(i);X }XX // Wild cards won't have country names.X designs[NUM_CARDS - 2] = designs[NUM_CARDS - 1] = WILD;X countries[NUM_CARDS - 2] = NUM_CARDS - 2;X countries[NUM_CARDS - 1] = NUM_CARDS - 1;X countryNames[NUM_CARDS - 2] = countryNames[NUM_CARDS - 1] = "";X }XX // Determines if a card set is a tradeable set.X public static boolean isSet(Card c1, Card c2, Card c3)X {X int numWilds = 0, numMissing = 3;XX // Count number of wild cards.X if (c1.design == WILD) { numWilds++; }X if (c2.design == WILD) { numWilds++; }X if (c3.design == WILD) { numWilds++; }XX // Trivial case first -- all designs the same.X if ((c1.design == c2.design) && (c2.design == c3.design)) {X return true;X }XX // Another trivial case -- 2 wild cards.X if (numWilds == 2) {X return true;X }XX // Determine which designs there are.X for (int i = 0; i < 3; i++) {X if ((c1.design == i) || (c2.design == i) || (c3.design == i)) {X numMissing--;X }X }XX if (((numMissing - numWilds) == 0) || // 3 different designsX ((numMissing == 2) && (numWilds == 1))) { // same design w/ wildX return true;X }XX return false;X }X X private int design;X private int country;X private boolean selected;XX public Card(int i)X {X this(designs[i], countries[i]);X }X X public Card(int design, int country)X {X this.design = design;X this.country = country;X selected = false;X }XX public int getDesign()X {X return design;X }XX public int getCountry()X {X return country;X }XX public boolean isSelected()X {X return selected;X }X X public void toggleSelected()X {X selected = !selected;X }XX public void paint(Graphics g, int x, int y, int w, int h)X {X FontMetrics fm = g.getFontMetrics();X int designWidth = fm.stringWidth(designNames[design]);X int countryWidth = fm.stringWidth(countryNames[country]);X int stringHeight = fm.getHeight();X X if (selected) {X g.setColor(Color.black);X g.fillRect(x+2, y, w-4, h);X g.setColor(Color.white);X g.drawLine(x+2, y+(h/2), x+w-2, y+(h/2));X X g.setColor(Color.white);X g.drawString(designNames[design],X x+((w - designWidth)/2),X ((h/2) - (stringHeight/2)) );X g.setColor(Color.pink);X g.drawString(countryNames[country],X x+((w - countryWidth)/2),X ((h/2) - (stringHeight/2)) + h/2 );X }X else {X g.setColor(Color.black);X g.drawRect(x+2, y, w-4, h);X g.drawLine(x+2, y+(h/2), x+w-2, y+(h/2));XX g.setColor(Color.blue);X g.drawString(designNames[design],X x+((w - designWidth)/2),X ((h/2) - (stringHeight/2)) );X g.setColor(Color.red);X g.drawString(countryNames[country],X x+((w - countryWidth)/2),X ((h/2) - (stringHeight/2)) + h/2 );X }X }XX public String toString()X {X return "[design=" + designNames[design] +X ",country=" + countryNames[country] + "]";X }}SHAR_EOF $shar_touch -am 1210132696 'Card.java' && chmod 0644 'Card.java' || $echo 'restore of' 'Card.java' 'failed' if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'Card.java:' 'MD5 check failed'c145c49ddb10f9019d0247986fc07952 Card.javaSHAR_EOF else shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'Card.java'`" test 3951 -eq "$shar_count" || $echo 'Card.java:' 'original size' '3951,' 'current size' "$shar_count!" fifi# ============= PileCanvas.java ==============if test -f 'PileCanvas.java' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'PileCanvas.java' '(file already exists)'else $echo 'x -' extracting 'PileCanvas.java' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'PileCanvas.java' &&// CS 582 - Fall 1996 - OSU// Jean-Guy SpetonXimport java.awt.*;X// Risk-specific widget to display Cards in a Pile.class PileCanvas extends Canvas{X // The maximum number of "top" cards to display.X private final static int MAX_CARDS_SHOWN = 5;XX private Risk risk;X X public PileCanvas(Risk risk)X {X this.risk = risk;X setBackground(Color.white);X }XX // AWT methods.XX // Toggle a card's selected state, unless doing so would result inX // more than 3 selected cards.X public boolean mouseDown(Event event, int x, int y)X {X int i = x / (size().width / MAX_CARDS_SHOWN);X Pile pile = risk.getCurrentPlayer().getPile();X int numSelected = 0;XX for (int j = 0; j < MAX_CARDS_SHOWN; j++) {X if (j < pile.size()) {X if (pile.cardAt(j).isSelected()) {X numSelected++;X }X }X }XX if (i < pile.size()) {X if (pile.cardAt(i).isSelected() || (numSelected < 3)) {X pile.cardAt(i).toggleSelected();X repaint();X }X }XX risk.checkCardSet();X X return true;X }X X public void paint(Graphics g)X {X Pile pile = risk.getCurrentPlayer().getPile();X Dimension d = size();X int cardWidth = d.width / MAX_CARDS_SHOWN;X int cardHeight = d.height - 1;XX for (int i = 0; i < MAX_CARDS_SHOWN; i++) {X if (i == pile.size()) {X break;X }XX Card c = pile.cardAt(i);X c.paint(g, cardWidth * i, 0, cardWidth, cardHeight);X }X }}SHAR_EOF $shar_touch -am 1210132696 'PileCanvas.java' && chmod 0644 'PileCanvas.java' || $echo 'restore of' 'PileCanvas.java' 'failed' if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'PileCanvas.java:' 'MD5 check failed'c4456e92ff52453df48cb4b65b0c609f PileCanvas.javaSHAR_EOF else shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'PileCanvas.java'`" test 1424 -eq "$shar_count" || $echo 'PileCanvas.java:' 'original size' '1424,' 'current size' "$shar_count!" fifi# ============= Makefile ==============if test -f 'Makefile' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'Makefile' '(file already exists)'else $echo 'x -' extracting 'Makefile' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'Makefile' &&XJAVAC = javacJFLAGS = -gXSRCS = Risk.java World.java Country.java Player.java Pile.java DrawPile.java Card.java PileCanvas.javaOBJS = $(SRCS:.java=.class)XX.SUFFIXES: .java .classXX.java.class:X $(JAVAC) $(JFLAGS) $<Xall: $(OBJS)X @echo "Done!"Xagain:X @rm -f $(OBJS)X @make JFLAGS=$(JFLAGS)Xshar:X shar $(SRCS) Makefile >risk.sharSHAR_EOF $shar_touch -am 1210141896 'Makefile' && chmod 0644 'Makefile' || $echo 'restore of' 'Makefile' 'failed' if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'Makefile:' 'MD5 check failed'7ce7bf1c39e600425cdb88b31858780f MakefileSHAR_EOF else shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'Makefile'`" test 340 -eq "$shar_count" || $echo 'Makefile:' 'original size' '340,' 'current size' "$shar_count!" fifirm -fr _sh13934exit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -