亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? game.java

?? 模仿Fyrad32編寫的四子棋游戲
?? JAVA
字號:
package fyrad;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class Game extends JFrame implements ActionListener
{
	private static final long serialVersionUID = 6936248325451266049L;
	private int columns=8;//棋盤布局9行8列                
	private int rows=9;
	private int playerFlag;//下棋標志位
	private Mode playMode;//對戰模式(默認人機對戰)
	private Map map;      //旗子擺放
	private Table table;  //布局
	private Button[][] button;//棋子
	private int winFlag=0;
	private JMenu game;      //菜單選項
	private JMenu option;
	private JMenu help;
	private JMenuBar menubar;//菜單欄
	private JToolBar toolbar;//按鈕欄
	private InfoShow infoBoard;//信息提示框
	private UserInfo user1Board,user2Board;//玩家信息
	private Dialog dialog;//對話框
	private JFileChooser filechooser;//文件夾選項
	private ActionListener listener=new MenuItemActionListener(menubar);//實例化菜單欄監聽器
	private ActionListener listener1=new ButtonActionListener(toolbar);//實例化按鈕欄監聽器
	public Game(){ InitGame(); }
	//初始化游戲 
	public void InitGame() 
	{
		playerFlag=1;
		Container container=getContentPane();
		GridLayout tableLayout=new GridLayout(rows,columns);
		playMode=new Mode();
		//初始化布局、提示消息、菜單項、菜單欄、按鈕欄、棋子、玩家信息
		table=new Table(tableLayout);//布局
		table.setBackground(Color.blue);
		infoBoard=new InfoShow();//提示消息
		game=new JMenu("Game");   //菜單項
		option=new JMenu("Option");
		help=new JMenu("Help");
		menubar=new JMenuBar();   //菜單欄
		toolbar=new JToolBar();   //按鈕欄
		button=new Button[rows][columns];//棋子
		user1Board=new UserInfo("Player",Color.yellow);//玩家信息
		user2Board=new UserInfo("Computer",Color.red);
		infoBoard.SetP1Name(user1Board.userName);
		infoBoard.SetP2Name(user2Board.userName);
		filechooser=new JFileChooser();//文件夾選項
		//添加按紐和監聽器
		game.setMnemonic('G');
        game.add(menuItem("New Game ...",listener,"New Game ...",'N',KeyEvent.VK_N));
        game.add(menuItem("Next Game ...",listener,"Next Game ...",'t',KeyEvent.VK_T));
        game.addSeparator();
        game.add(menuItem("Nomal Mode",listener,"Nomal Mode",0,0));
        game.add(menuItem("Net Mode",listener,"Net Mode",0,0));
        game.addSeparator();
        game.add(menuItem("Open",listener,"Open",'O',0));
        game.add(menuItem("Save As ...",listener,"Save As ...",'S',KeyEvent.VK_S));
        game.addSeparator();
        game.add(menuItem("Exit",listener,"exit",'x',0));
		option.setMnemonic('O');
        option.add(menuItem("Move",listener,"move",'M',KeyEvent.VK_M));
        option.add(menuItem("Undo Last Move",listener,"undolastmove",'U',KeyEvent.VK_U));
        option.addSeparator();
        option.add(menuItem("Break",listener,"break",'B',KeyEvent.VK_B));
        help.setMnemonic('H');
        help.add(menuItem("About...",listener,"about",'A',0));
        menubar.add(game);
        menubar.add(option);
        menubar.add(help);
        toolbar.add(button(listener1,"A1",0));
        toolbar.addSeparator();
        toolbar.add(button(listener1,"B2",1));
        toolbar.add(button(listener1,"C3",2));
        toolbar.add(button(listener1,"D4",3));
        toolbar.add(button(listener1,"E5",4));
        toolbar.addSeparator();
        toolbar.add(button(listener1,"F6",5));
        toolbar.addSeparator();
        toolbar.add(button(listener1,"G7",6));
        toolbar.add(button(listener1,"H8",7));
        toolbar.addSeparator();
        toolbar.add(button(listener1,"I9",8));
        toolbar.setFloatable(false);
		//在table布局中添加棋子
		for(int i=0;i<rows;i++)
		{
			for(int j=0;j<columns;j++)
			{
				button[i][j]=new Button();
				
				button[i][j].addActionListener(this);
				
				button[i][j].setEnabled(false);
				
				table.add(button[i][j]);
			}
		}
		//添加所有初始化的對象
		container.setLayout(null);
		container.add(table,"Center");
		container.add(infoBoard);
		container.add(user1Board);
		container.add(user2Board);
		container.add(menubar);
		container.add(toolbar);
		table.setBounds(0,62,columns*49,rows*49);
		infoBoard.setBounds(0,502,392,21);
		menubar.setBounds(0,0, 392, 27);
		toolbar.setBounds(0,27,392,35);
		user1Board.setBounds(0,522,197,44);
		user2Board.setBounds(196,522,196,44);
	}
	//設置游戲參數(玩家顏色、對戰模式)
	@SuppressWarnings("deprecation")
	public void SetGame() 
	{
		dialog=new Dialog(this,playMode,user1Board,user2Board,infoBoard);
		dialog.show();
		infoBoard.SetP1Name(user1Board.userName);
		infoBoard.SetP2Name(user2Board.userName);
	}
	//開始游戲
	public void StartGame() 
	{
		map=new Map(rows,columns);
		infoBoard.ShowMessage();
		for(int i=0;i<rows;i++)
		{
			for(int j=0;j<columns;j++)
			{
				button[i][j].setEnabled(true);
			}
		}
	}
	//終止游戲
	public void StopGame()
	{
		for(int i=0;i<rows;i++)
		{
			for(int j=0;j<columns;j++)
			{
				button[i][j].setEnabled(false);
			}
		}
	}
	//重新開始游戲
	public void NewGame() 
	{
		winFlag=0;
		infoBoard.equalFlag=0;
		playerFlag=1;
		infoBoard.SetPlayerFlag(playerFlag);
		infoBoard.winFlag=0;
		map=new Map(rows,columns);
		infoBoard.ShowMessage();
		for(int i=0;i<rows;i++)
		{
			for(int j=0;j<columns;j++)
			{
				button[i][j].setEnabled(true);
				button[i][j].hitFlag=0;
				button[i][j].setBackground(getBackground());
			}
		}
	}
	//退出游戲
	public void Exit(){ dispose(); }
	//打開文件
	//public void Exit()
	//菜單下拉子項生成方法
	public static JMenuItem menuItem(String label,ActionListener listener,String command,int mnemonic,int acceleratorKey)
	{
		JMenuItem item=new JMenuItem(label);
		item.addActionListener(listener);
		item.setActionCommand(command);
		if(mnemonic!=0)item.setMnemonic((char)mnemonic);
		if(acceleratorKey!=0)item.setAccelerator(KeyStroke.getKeyStroke(acceleratorKey,java.awt.Event.CTRL_MASK));
		return item;
	}
    //菜單下拉子項監聽器
	public class MenuItemActionListener implements ActionListener
	{
		Component parent;
		public MenuItemActionListener(Component parent)
		{
			this.parent=parent;
		}
		public void actionPerformed(ActionEvent e) 
		{
			JMenuItem item=(JMenuItem)e.getSource();
			String cmd=item.getActionCommand();
			if(cmd=="about"){About about=new About();about.About();}
			if(cmd=="exit"){Exit();}
			if(cmd=="Next Game ..."){StartGame();}
			if(cmd=="Nomal Mode"){NewGame();}
			if(cmd=="break"){StopGame();}
			if(cmd=="New Game ..."){SetGame();}
			if(cmd=="Open"){filechooser.showOpenDialog(menubar);}
			if(cmd=="Save As ..."){filechooser.showSaveDialog(menubar);}
		}
	}
    //按鈕圖標生成方法
	static ImageIcon createImageIcon(String path) 
    {
	    java.net.URL imgURL=Game.class.getResource(path);
	    if (imgURL!=null) { return new ImageIcon(imgURL); }
	    else 
	    {
	      System.err.println("Couldn't find file: "+path);
	      return null;
	    }
	}
    //按鈕生成方法
    public static JButton button(ActionListener listener,String command,int code)
	{
    	ImageIcon[] images = new ImageIcon[9];
    	String[] s=new String[9];
    	s[0]=("Switch to Network Mode");
    	s[1]=("New Game");
    	s[2]=("Next Game");
    	s[3]=("Make Computer Move");
    	s[4]=("Undo Last Move");
    	s[5]=("Break");
    	s[6]=("Auto Minimize");
    	s[7]=("Show Progress Bar");
    	s[8]=("About");
    	for (int i = 0; i < 9; i++) 
	    {
	      images[i] = createImageIcon("images/icon/"+i+".jpg");
	    }
    	JButton button=new JButton ();
    	button.setOpaque(true);
    	
		button.addActionListener(listener);
		button.setActionCommand(command);
		ImageIcon icon = images[code];
		button.setIcon(icon);
		button.setToolTipText(s[code]);
		return button;
	}
    //按鈕監聽器
    public class ButtonActionListener implements ActionListener
	{
		Component parent;
		public ButtonActionListener(Component parent)
		{
			this.parent=parent;
		}
		public void actionPerformed(ActionEvent e) 
		{
			JButton button=(JButton)e.getSource();
			String cmd=button.getActionCommand();
			if(cmd=="I9"){About about=new About();about.About();}
			if(cmd=="B2"){StartGame();}
			if(cmd=="C3"){NewGame();}
			if(cmd=="E5"){StopGame();}
			if(cmd=="A1"){SetGame();}
			if(cmd=="F6"){Exit();}
		}
	}
	//地圖上的主要算法在按鈕上的實現
	public void actionPerformed(ActionEvent e) 
	{
		//給每個棋子添加監聽器(如何下棋)
		for (int i = 0; i < rows; i++) 
		{
			for (int j = 0; j < columns; j++) 
			{
				if (e.getSource().equals(button[i][j])) 
				{ 
					//人人對戰模式
					if (playMode.playMode == 1) 
					{
						System.out.println("mousePressed()");
						//判斷當前玩家是否可以置子(1可以置子,0不可以置子)
						if (playerFlag == 1) 
						{
							if (button[map.Place(j)][j].hitFlag == 0) 
							{
								button[map.Place(j)][j]
										.setBackground(user1Board.userColor);
								button[map.Place(j)][j].hitFlag = playerFlag;
								map.SetPlayer(playerFlag,map.Place(j),j);//設置地圖
								map.count--;
								if(map.IsEqual())//判斷平局
								{
									System.out.println("equal");
									infoBoard.equalFlag=1;
									infoBoard.ShowEqual();
								}
								//判斷是否可贏
								if(map.IsWin(map.Place(j),j,playerFlag))
								{
									System.out.println("end");
									infoBoard.ShowWin();
									StopGame();
								}
								map.AddPlace(j);
								playerFlag = 2;
								infoBoard.SetPlayerFlag(2);
								infoBoard.ShowMessage();
							}
						} 
						//另外一人下子
						else 
						{
							if (button[map.Place(j)][j].hitFlag == 0) 
							{
								button[map.Place(j)][j]
										.setBackground(user2Board.userColor);
								button[map.Place(j)][j].hitFlag = playerFlag;
								map.SetPlayer(playerFlag,map.Place(j),j);//設置地圖
								map.count--;
								if(map.IsEqual())//判斷平局
								{
									System.out.println("equal");
									infoBoard.equalFlag=1;
									infoBoard.ShowEqual();
								}
								if(map.IsWin(map.Place(j),j,playerFlag))
								{
									System.out.println("end");
									infoBoard.ShowWin();
									StopGame();
								}
								map.AddPlace(j);
								playerFlag = 1;
								infoBoard.SetPlayerFlag(1);
								infoBoard.ShowMessage();
							}
						}
					} 
					//人機對戰模式
					else 
					{
                        //人置子 
						if (button[map.Place(j)][j].hitFlag == 0) 
						{
							button[map.Place(j)][j]
									.setBackground(user1Board.userColor);
							button[map.Place(j)][j].hitFlag = playerFlag;
							map.SetPlayer(playerFlag,map.Place(j),j);//設置地圖
							map.count--;
							if(map.IsEqual())//判斷平局
							{
								System.out.println("equal");
								infoBoard.equalFlag=1;
								infoBoard.ShowEqual();
							}
							//判斷是否可贏
							if(map.IsWin(map.Place(j),j,playerFlag))
							{
								System.out.println("end");
								winFlag=1;
								infoBoard.ShowWin();
								StopGame();
							}
							map.AddPlace(j);
							playerFlag = 2;
							infoBoard.SetPlayerFlag(2);
							infoBoard.ShowMessage();
						}
						// 電腦置子 
						if (winFlag==0&&playerFlag == 2) 
						{
							int temp = map.ComputerAIPlace();
							while (button[map.Place(temp)][temp].hitFlag != 0) 
							{
								temp = map.ComputerPlace();
							}
							button[map.Place(temp)][temp]
									.setBackground(user2Board.userColor);
							button[map.Place(temp)][temp].hitFlag = playerFlag;
							map.SetPlayer(playerFlag,map.Place(temp),temp);//設置地圖
							map.count--;
							if(map.IsEqual())//判斷平局
							{
								System.out.println("equal");
								infoBoard.equalFlag=1;
								infoBoard.ShowEqual();
							}
							if(map.IsWin(map.Place(temp),temp,playerFlag))
							{
								System.out.println("end");
								infoBoard.ShowWin();
								StopGame();
							}
							map.AddPlace(temp);
							playerFlag = 1;							
							infoBoard.SetPlayerFlag(1);
							infoBoard.ShowMessage();
						}

					}
				}
            }
		}
	}
	public static void main(String[] args) 
	{
		Cover cover=new Cover();
		cover.Cover();
		Game panel=new Game();
		panel.setTitle("Fyrad 32");
		panel.setSize(400, 600);
		panel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//居中窗體
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
		int ScreenWidth=screenSize.width;
		int ScreenHeight=screenSize.height;
		int x=(ScreenWidth-panel.getWidth())/2;
		int y=(ScreenHeight-panel.getHeight())/2;
		panel.setLocation(x,y);
		panel.setVisible(true);
    }
}
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人99久久亚洲综合精品| 成人晚上爱看视频| 国产精品12区| 欧美一区二区免费| 日韩精品一区二区三区在线播放| 免费在线观看精品| 日韩片之四级片| 精品一区二区三区日韩| 日韩欧美一级精品久久| 国内精品伊人久久久久影院对白| 久久综合资源网| 成年人网站91| 日本在线不卡视频一二三区| 亚洲成人免费观看| 国产尤物一区二区| 福利一区二区在线观看| 91丨porny丨国产入口| 91久久精品日日躁夜夜躁欧美| av电影天堂一区二区在线观看| 色偷偷久久人人79超碰人人澡| 91女神在线视频| 日本久久电影网| 欧美一区二区在线观看| 《视频一区视频二区| 激情另类小说区图片区视频区| youjizz国产精品| 欧美精品一区二区三区在线播放| 国产精品网站在线观看| 日韩精品91亚洲二区在线观看 | 高清在线观看日韩| 成人动漫在线一区| 欧美三级电影在线观看| 亚洲国产视频直播| 成人一区二区三区中文字幕| 欧美丝袜丝交足nylons| av综合在线播放| 91美女视频网站| 亚洲精品成人在线| 在线精品视频一区二区| 久久成人麻豆午夜电影| 亚洲欧美日韩在线不卡| 高清日韩电视剧大全免费| 亚洲v精品v日韩v欧美v专区| 久久九九99视频| 在线电影一区二区三区| 成人黄色小视频| 激情六月婷婷综合| 亚洲成av人综合在线观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | av中文字幕亚洲| 国产精品久久久久久久裸模| 国产成人在线视频网址| 国产三级欧美三级日产三级99| 日韩av电影一区| 欧美一级在线免费| 丁香婷婷综合色啪| 99久久精品免费精品国产| 久久99精品久久久久久动态图 | 成人av免费在线| 麻豆中文一区二区| 香蕉成人啪国产精品视频综合网| 国产精品入口麻豆九色| 26uuu国产日韩综合| 91精品国产综合久久婷婷香蕉 | 福利一区福利二区| 黑人巨大精品欧美一区| 美女脱光内衣内裤视频久久网站 | 青草国产精品久久久久久| 一个色综合av| 一区二区三区国产精品| 亚洲另类中文字| 日韩毛片高清在线播放| |精品福利一区二区三区| 国产精品你懂的| 国产精品的网站| 国产精品国产三级国产aⅴ原创 | 亚洲欧洲日韩女同| 精品一区二区三区在线视频| 99九九99九九九视频精品| 亚洲综合自拍偷拍| 亚洲精品乱码久久久久久日本蜜臀| 亚洲国产激情av| 欧美激情艳妇裸体舞| 久久久精品蜜桃| 日韩精品一区二区三区在线 | 国产精品久久久久影视| 2021久久国产精品不只是精品| 日韩欧美成人激情| 久久精品一区二区三区不卡牛牛| 久久亚洲一区二区三区明星换脸| 精品久久久久久久人人人人传媒| 日韩一级大片在线| 精品国产一区二区精华 | 国产欧美一区二区精品忘忧草| 久久综合久久久久88| 国产午夜精品一区二区三区嫩草| 91福利小视频| 91蜜桃在线免费视频| 九九在线精品视频| 国产一区二区三区四| 国模冰冰炮一区二区| 久久99精品国产91久久来源| 日韩精品每日更新| 麻豆精品一二三| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩一级大片网址| 色噜噜狠狠成人中文综合| 欧美精品v国产精品v日韩精品 | 成人av电影免费观看| 99国产精品久久| 色94色欧美sute亚洲线路一久 | 久久av中文字幕片| 久久综合久久99| 国产精品美女久久久久av爽李琼| 国产喂奶挤奶一区二区三区| 亚洲激情综合网| 久久精品国产精品亚洲综合| 99re6这里只有精品视频在线观看| 在线观看一区不卡| 久久婷婷国产综合精品青草| 亚洲色图欧洲色图婷婷| 韩国女主播成人在线观看| 91美女蜜桃在线| 欧美日本一区二区三区四区| 久久久久久亚洲综合影院红桃| 国产农村妇女毛片精品久久麻豆| 亚洲欧美日韩国产一区二区三区| 日韩激情视频在线观看| 国产一区二区三区国产| 国产专区欧美精品| 91福利视频网站| 日本一区二区三区电影| 日韩精品乱码av一区二区| 粉嫩欧美一区二区三区高清影视| 欧美国产激情一区二区三区蜜月| 欧美一区二区三区视频在线| 91视频.com| jiyouzz国产精品久久| 毛片av一区二区| 久久99精品网久久| 亚洲欧美日韩久久| 国产精品久久久久三级| 美女性感视频久久| 国产精品全国免费观看高清| 日韩欧美视频一区| 欧美日韩免费视频| 欧美性色黄大片手机版| 99久久婷婷国产精品综合| 国产91丝袜在线18| 国产一区视频在线看| 开心九九激情九九欧美日韩精美视频电影| 日韩理论片中文av| 中文字幕亚洲一区二区va在线| 精品国产制服丝袜高跟| 精品成人在线观看| 国产无遮挡一区二区三区毛片日本| 欧美α欧美αv大片| 欧美精品一区二| 日本一区二区动态图| 亚洲精品视频一区| 亚洲黄色免费电影| 亚洲国产视频a| 蜜桃视频第一区免费观看| 国产精品1区2区| 91麻豆自制传媒国产之光| 91国偷自产一区二区三区成为亚洲经典| 一本色道**综合亚洲精品蜜桃冫| 91成人在线免费观看| 欧美成人女星排名| 国产精品久久久久久久久免费丝袜| 色国产综合视频| 日产欧产美韩系列久久99| 精品裸体舞一区二区三区| 欧美日韩专区在线| 国产乱子轮精品视频| 亚洲一区二区三区在线| 亚洲综合男人的天堂| 中文字幕av资源一区| 色av成人天堂桃色av| 亚洲一区二三区| 91精品国产乱| 国产精品综合二区| 中文字幕精品一区二区精品绿巨人| 成人伦理片在线| 亚洲综合色视频| 8v天堂国产在线一区二区| 经典三级在线一区| 中文字幕一区二区不卡| 欧美亚洲国产bt| 奇米精品一区二区三区在线观看| 2017欧美狠狠色| 91蜜桃视频在线| 日本麻豆一区二区三区视频| 精品久久久久久最新网址| 成人精品免费视频| 亚洲一区二区欧美激情| 日韩欧美精品三级| 白白色亚洲国产精品| 亚洲bt欧美bt精品777| 国产亚洲一区二区三区在线观看|