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

📄 shinterface.java

📁 扑克牌的发牌:按一定的规则四人玩牌;谁赢了先给谁发牌 (默认先给主人公控制的人发牌)2.扑克牌的出牌:谁拿了红桃4,谁先出;出牌规则
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.Color;import java.awt.BorderLayout;import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.image.*;import java.net.*;import javax.swing.JComponent.*;import java.awt.geom.*;import java.io.*;/*------------------------------- This is a Shithead(card game) Program @Author Sam Cavenagh @Date 1/11/02Overview:I develop this program to extend my java skills and to implement something that to the best of my knowledge had not been done before.  I spend a good few months of my life working on this project and have implemented most of the functionality that I had foreseenin my initial plans.  However, Shithead is a very adaptable game and many different versions of it exist.  I have received several emails requesting source code or changes to the program.  I myself feel I have spent enough time on this project and its time to move onto other work (such as uni).  Thus I am making the source code available to all who are brave enough to attempt to improve this program!!Important Note:I will be the first to admit that the code is not in the best form and large aspect of the program need to be re-architectured, however I do not have time to do this myself but if someone else wants to do it great.  I only have a few requests listed below.1.	Any new versions of the program I would like to remain open source2.	Improved versions are emailed to me so that can be added to my site for Shithead player     that don抰 have the time or skill to implement changes themselves3.	I'm still given some form of credit for the program's creation (even if only as a footnote)Website: http://home.pacific.net.au/~cavenagh/SH/Email: cavenaghweb@hotmail.com -------------------------------*/ class SHinterface extends JFrame implements ActionListener, MouseMotionListener, MouseListener, WindowListener {    JLabel image;    JTextArea msg;    JPanel panel;    JTextField input;    JScrollPane scrollPane;    int mouseX, mouseY;    JMenuBar menuBar;    JMenu menu;    JMenuItem menuItem;    JRadioButtonMenuItem rbMenuItem;    Image cardspic;    Image back;    Image backSW;    Image title;    Image pointer[] = new Image[4];    Image burntPic;    //Graphics buffer stuff    Graphics g;    BufferedImage offscreen;    ImageIcon imageI;    //for smaller screens    Image offscreen2;    Graphics g2;    Graphics2D g2d;    boolean player1 = false; // is 1 player game running    boolean player2 = false; //is 2 player game running    boolean myTurn = false; //is it my turn    boolean imServer = false;    ServerMessage servermsg = null;    Message message = null;    Dealer dealer = null;    Player player = null;    Score score;        String playersName = "unknown";    Hand hand;    //Points where to place cards    Point pointplayer1[] = new Point[3];    Point pointplayer2[] = new Point[3];    Point pointplayer3[] = new Point[3];    Point pointplayer4[] = new Point[3];    Point centre1;    Dimension screenSize;    SHinterface()    {       //Loading Images    MediaTracker tracker = new MediaTracker(this);//Used to track loading of image    Toolkit toolkit = Toolkit.getDefaultToolkit();    //loading images from jar file    cardspic = toolkit.getImage(this.getClass().getResource("cards.gif"));    back = toolkit.getImage(this.getClass().getResource("back.gif"));    backSW = toolkit.getImage(this.getClass().getResource("backSW.gif"));    title = toolkit.getImage(this.getClass().getResource("SHtitle.jpg"));    pointer[0] = toolkit.getImage(this.getClass().getResource("pointer.gif"));    burntPic = toolkit.getImage(this.getClass().getResource("burnt.jpg"));    tracker.addImage(cardspic, 1);    tracker.addImage(back, 1);    tracker.addImage(backSW, 1);    tracker.addImage(title, 1);    tracker.addImage(pointer[0], 1);    tracker.addImage(burntPic, 1);    try {        //Waiting until image loaded.        tracker.waitForAll();    } catch (InterruptedException e) {        msg.setText("Load Error " + e);    }    pointer[3] = rotatePointer(pointer[0]);    pointer[2] = rotatePointer(pointer[3]);    pointer[1] = rotatePointer(pointer[2]);    offscreen = new BufferedImage(450, 550, BufferedImage.TYPE_3BYTE_BGR);    g = offscreen.getGraphics();    g.drawImage(title, -40, 120, this);    g.setColor(Color.white);    g.drawLine(0, 450, 450, 450);    hand = new Hand(this, back, g);    //screen resolution    screenSize = Toolkit.getDefaultToolkit().getScreenSize();    //screenSize.width = 800;     if(screenSize.width < 1024){//resizing image if to big for screen        offscreen2 = new BufferedImage(338, 413, BufferedImage.TYPE_3BYTE_BGR);        //offscreen2 = offscreen;        g2 = offscreen2.getGraphics();        g2d = (Graphics2D) g2;        AffineTransform at = new AffineTransform();        at.scale(0.75, 0.75);        //AffineTransform toCenterAt = new AffineTransform();        //toCenterAt.concatenate(at);        //toCenterAt.translate(-(r.width/2), -(r.height/2));        g2d.transform(at);        g2d.drawImage(offscreen, 0, 0, null);        //g2.drawImage(offscreen, 0, 0, 338, 413, null);        //offscreen2 = offscreen.getScaledInstance(338, 413, Image.SCALE_FAST);        imageI = new ImageIcon(offscreen2);        //offscreen2 = this.createImage(338, 413);        //setImageSize(338, 413);        //repaint();        //imageI = new ImageIcon(offscreen.getScaledInstance(338, 413, Image.SCALE_SMOOTH));    }else        imageI = new ImageIcon(offscreen);    image = new JLabel(imageI);    addMouseMotionListener(this);    addMouseListener(this);    requestFocus();    //Construction Menu    menuBar = new JMenuBar();    //Build the first menu.    menu = new JMenu("File");    menu.setMnemonic(KeyEvent.VK_F);    menu.getAccessibleContext().setAccessibleDescription(        "Game Options Can Be Found Here");    menuBar.add(menu);    //File group of JMenuItems    menuItem = new JMenuItem("1 Player",                         KeyEvent.VK_P);    menuItem.getAccessibleContext().setAccessibleDescription(            "Start Single Player Game");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("Multi Player Server",                         KeyEvent.VK_S);    menuItem.getAccessibleContext().setAccessibleDescription(            "Be the server for a Multi player game");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("Multi Player Client",                         KeyEvent.VK_C);    menuItem.getAccessibleContext().setAccessibleDescription(            "Connect to another Multi player Game");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("Close Connections",                         KeyEvent.VK_L);    menuItem.getAccessibleContext().setAccessibleDescription(            "Close Game Connection");    menuItem.addActionListener( this );    menu.add(menuItem);        menuItem = new JMenuItem("Scoreboard",                         KeyEvent.VK_B);    menuItem.getAccessibleContext().setAccessibleDescription(            "Veiw Scoreboard");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("Quit",                         KeyEvent.VK_Q);    menuItem.getAccessibleContext().setAccessibleDescription(            "Quit Game");    menuItem.addActionListener( this );    menu.add(menuItem);    //Build second menu in the menu bar.    menu = new JMenu("Options");    menu.getAccessibleContext().setAccessibleDescription(        "Game Options");    menuBar.add(menu);    menuItem = new JMenuItem("Redeal",                         KeyEvent.VK_R);    menuItem.getAccessibleContext().setAccessibleDescription(            "Redeal the deck");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("Start Game",                         KeyEvent.VK_S);    menuItem.getAccessibleContext().setAccessibleDescription(            "Start game now");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("AI Speed",                         KeyEvent.VK_A);    menuItem.getAccessibleContext().setAccessibleDescription(            "Time it takes for GameAI to make a move");    menuItem.addActionListener( this );    menu.add(menuItem);    //Build 3rd menu in the menu bar.    menu = new JMenu("About");    menu.getAccessibleContext().setAccessibleDescription(        "About the Game");    menuBar.add(menu);    menuItem = new JMenuItem("Rules",                         KeyEvent.VK_R);    menuItem.getAccessibleContext().setAccessibleDescription(            "Who to play");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("Home Page",                         KeyEvent.VK_H);    menuItem.getAccessibleContext().setAccessibleDescription(            "View Home Page");    menuItem.addActionListener( this );    menu.add(menuItem);    menuItem = new JMenuItem("About",                         KeyEvent.VK_A);    menuItem.getAccessibleContext().setAccessibleDescription(            "About the Game");    menuItem.addActionListener( this );    menu.add(menuItem);    addWindowListener(this);     msg = new JTextArea("Welcome to Shithead the card game\n", 4, 20);     msg.setLineWrap(true);     msg.setEditable(false);     msg.setDisabledTextColor(Color.black);    input = new JTextField();    input.addActionListener(this);    scrollPane = new JScrollPane(msg, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);    //Testing if images loaded correctly -  doesnt need to do this with jar file    //File f = new File("cards.gif");    //if (!f.exists() || !f.isFile() || !f.canRead())    //addMsg("Unable to load file " +f.getAbsolutePath());     panel = new JPanel();     GridBagLayout gridbag = new GridBagLayout();     GridBagConstraints c = new GridBagConstraints();     panel.setLayout(gridbag);     c.anchor = GridBagConstraints.WEST;     c.fill = GridBagConstraints.BOTH;      panel.setBackground(Color.white);     getContentPane().add(panel);     panel.add(menuBar, c);     c.gridy = 1;     panel.add(image, c);     c.gridy = 2;     panel.add(scrollPane, c);     c.gridy = 3;     panel.add(input, c);    addMsg("Detected Screen Size: " + screenSize.width  + "x" + screenSize.height);    if(screenSize.width < 1024)        addMsg("For optimal graphics use 1024x768 resolution");    score = new Score(this);   }   public void actionPerformed(ActionEvent event){        String label = event.getActionCommand();        if (label.equals("Quit")){            //Closing Sockets on Quiting            if(servermsg != null)            servermsg.endConnection();            if(message != null)            message.endConnection();

⌨️ 快捷键说明

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