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

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

?? play.java

?? JAVA打字程序,通過它可以方便地學習多線程,java swing 編程
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
	int showCount;	//顯示字符數量
	int attackCount;//擊中數量
	Thread thread_start=null;//開始控制線程
	Thread thread_computer=null;//計算線程
	Thread thread_gameover=null;	
	
	
	public Play(String title,int showCount){
		super(title);
		//super();
		this.showCount=showCount;
		this.setSize(70*showCount,600);	
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize=this.getSize();
		
		if(frameSize.height>screenSize.height){
			frameSize.height=screenSize.height;
		}
		if(frameSize.width>screenSize.width){
			frameSize.width=screenSize.width;
		}
		
		this.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
		this.setBackground(Color.BLACK);
		this.setResizable(false);
		this.Init();
		this.setVisible(true);
		
		try{
			Class this_class=Class.forName("Play");
			this_url=this_class.getResource("errsound.au");
			errSound=Applet.newAudioClip(this_url);
			this_url=this_class.getResource("backsound.wav");
			backSound=Applet.newAudioClip(this_url);
			this_url=this_class.getResource("start.wav");
			startMusic=Applet.newAudioClip(this_url);
			this_url=this_class.getResource("addlevel.wav");
			addLevel=Applet.newAudioClip(this_url);
			this_url=this_class.getResource("sublevel.wav");
			subLevel=Applet.newAudioClip(this_url);
		}catch(Exception e){
		}
		
		Play.startMusic.play();
		
	}
	
	private class StartThread extends Thread{
		public void run(){	
			if(!IsStarted){
				Play.this.IsStarted=true;
				started();
			}
		}
	}
	
	private class ComputerThread extends Thread{
		public void run(){
			while(true){//計算打字速度,時間,分數
				try{
					this.sleep(1000);
				}catch(Exception e){
					
				}
				Play.this.computer();
			}
		}
	}
	public void threadStart(){
		Play.startMusic.stop();
		thread_start=new StartThread();
		//System.out.println("StartThread-------------------------");
		this.backSound.loop();//播放背景音樂
		thread_start.start();
	}
	public synchronized void resume(){
		for(int i=0;i<showCount;i++){
			if(games[i]!=null){
				games[i].resume();
			}
		}
		
	}
	public synchronized void stop(){
		this.IsStarted=!this.IsStarted;
		if(thread_start!=null){
			this.backSound.stop();
			thread_start.stop();
			thread_computer.stop();
			thread_start=null;
			thread_computer=null;
		}
		for(int i=0;i<showCount;i++){
			if(games[i]!=null){
				games[i].Down(false);
				System.out.println("線程關閉:"+i);
				games[i].stop();
			}
		}
		GamePanel.reSetStaticCount();
		
	}
	public synchronized void suspend(){
		for(int i=0;i<showCount;i++){
			if(games[i]!=null){
				games[i].suspend();
			}
		}
	}
	private void Init(){
		//初始化
		GamePanel.setMusic();
		games=new GamePanel[showCount];
		
		for(int i=0;i<showCount;i++){ 
			games[i]=new GamePanel("線程:"+i);
		}
		
		c=this.getContentPane();
		c.setLayout(new BorderLayout());
		int i=0;
		labels=new JLabel[10];
		labels[i++]=new JLabel("速度:");
		labels[i++]=new JLabel("0/0  ");
		labels[i++]=new JLabel("錯誤:");
		labels[i++]=new JLabel("0    ");
		labels[i++]=new JLabel("時間:");
		labels[i++]=new JLabel("0    ");
		labels[i++]=new JLabel("分數:");
		labels[i++]=new JLabel("0    ");
		labels[i++]=new JLabel("級別:");
		labels[i++]=new JLabel("0    ");
		JPanel south_Panel=new JPanel();
		JPanel center_Panel=new JPanel();
		for(int j=0;j<labels.length;j++){
			south_Panel.add(labels[j]);
		}
		i=0;
		jbtn_start=new JButton("開始");
		jbtn_set=new JButton("設置");
		jbtn_pause=new JButton("暫停");
		jbtn_exit=new JButton("退出");
		south_Panel.add(jbtn_start);
		south_Panel.add(jbtn_set);
		south_Panel.add(jbtn_pause);
		south_Panel.add(jbtn_exit);
		c.add(south_Panel,BorderLayout.SOUTH);
		center_Panel.setLayout(new GridLayout(1,showCount));
		for(i=0;i<showCount;i++){
			center_Panel.add(games[i]);
		}
		c.add(center_Panel,BorderLayout.CENTER);
		OnClickAdapter onClickListener=new OnClickAdapter();
		jbtn_start.addActionListener(onClickListener);
		jbtn_set.addActionListener(onClickListener);
		jbtn_pause.addActionListener(onClickListener);
		jbtn_exit.addActionListener(onClickListener);	
		this.addKeyListener(new KeyCheckAdaoter());
		//this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
	}
	  //Overridden so we can exit when window is closed
//	protected void processWindowEvent(WindowEvent e) {
	//   super.processWindowEvent(e);
	 //  if (e.getID() == WindowEvent.WINDOW_CLOSING) {
	   //		System.exit(0);
	 //  }
	//}
	public void started(){
		//System.out.println("started-------------------------");
		this.curLevel=1;
		thread_gameover=null;
		startTime=System.currentTimeMillis();//讀取游戲開始時間
		thread_computer=new ComputerThread();
		thread_computer.start();
		int j=0;
		int[] arrposflag=new int[showCount];
			
		for(int i=0;i<showCount;i++){
			arrposflag[i]=0;//開始所有線程
			games[i].start();
		
			//System.out.println("showCount-------------------------"+String.valueOf(i));
		}
		
		GamePanel temp=null;
		
		for(int i=0;i<showCount;i++){
			while(true){
				j=GamePanel.random.nextInt(showCount);
				if(arrposflag[j]==0){
					arrposflag[j]=1;
					if(temp!=null){
						try{
							Thread.sleep(1500);
						}catch(Exception e){
						}	
					}
					//System.out.println("games[j]-------------------------"+games[j]);
					temp=games[j];
					games[j].Down(true);
					break;	
				}
			}
		}
	}
	
	
	private class GameOverThread extends Thread{
		public void run(){
			Play.this.backSound.stop();
			GamePanel.gameOver.play();
			Play.this.stop();
			jbtn_start.setText("開始");
			JDialog dialog=new JDialog();
			dialog.setSize(200,100);
			dialog.setLocation((Play.this.getWidth()-dialog.getWidth())/2,
				(Play.this.getHeight()-dialog.getHeight())/2);
			dialog.setVisible(true);
		}
	}
	private void computer(){
		//計算速度
		if(GamePanel.GameOver){
			if(thread_gameover==null){
				thread_gameover=new GameOverThread();
				thread_gameover.start();
			}
			return;
		}
		int this_rate=0;
		int this_hits=0;
		for(int i=0;i<showCount;i++){
			this_rate+=games[i].getShowAllCount();
			this_hits+=games[i].getHitsCount();
		}
		this.labels[1].setText(Integer.toString(this_hits)+"/"+Integer.toString(this_rate));
		//計算時間
		
		this.currentTime=System.currentTimeMillis();
		int thisTime=(int)((this.currentTime-this.startTime)/1000);
		this.labels[5].setText(Integer.toString(thisTime)+"秒");
		
		//計算錯誤
		this.labels[3].setText(Integer.toString(this.errCount));
		
		//計算分數
		this.mark=this_hits*60/thisTime;
		this.labels[7].setText(Integer.toString(this.mark));
		
		//計算級別
		//System.out.println("計算級別");
		this.level=(this.mark-this.baseMark)/10;//10個字符為一級
		if(this.level<=0||this_hits<this.baseMark){
			this.level=1;
		}
		if(this.level>this.curLevel){
			Play.addLevel.play();
		}else if(this.level<this.curLevel){
			Play.subLevel.play();
		}
		this.curLevel=this.level;
		GamePanel.addSpeed(this.level);
		this.labels[9].setText(Integer.toString(this.level));
	}
	private void reComputer(){
		this.labels[1].setText("0/0  ");
		this.labels[3].setText("0    ");
		this.labels[5].setText("0    ");
		this.labels[7].setText("0    ");
		this.labels[9].setText("0    ");
	}
	private class KeyCheckAdaoter extends KeyAdapter{
		public void keyTyped(KeyEvent e){
			char keychar;
			keychar=e.getKeyChar();
			for(int i=0;i<showCount;i++){
				if (keychar==games[i].getChar()&&games[i].hasNomarl()){
					games[i].imageflag=true;
					return;
				}
			}
			Play.this.errSound.play();
			Play.this.errCount++;//錯誤的按鍵
		}	
	}
	private class OnClickAdapter implements ActionListener{
		public void actionPerformed(ActionEvent e){
			if(e.getSource()==jbtn_start){
				if(jbtn_start.getText().equals("開始")){
					jbtn_start.setText("停止");
					Play.this.threadStart();
				}else{
					jbtn_start.setText("開始");
					Play.this.stop();
				}
				Play.this.requestFocus(true);
			}else if(e.getSource()==jbtn_set){
				Play.this.requestFocus(true);
			}else if(e.getSource()==jbtn_pause){
				if(jbtn_pause.getText().equals("暫停")){
					jbtn_pause.setText("恢復");
					Play.this.suspend();
				}else{
					jbtn_pause.setText("暫停");
					Play.this.resume();
				}
				
				Play.this.requestFocus(true);
			}else if(e.getSource()==jbtn_exit){
				Play.this.requestFocus(true);
				System.exit(0);
			}
		}	
	}
	public static void main(String [] args){
		Play this_play=new Play("我的打字游戲--作者:楊柯--版本號:V1.0",12);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美综合一区| 欧美精品一区二区三区蜜桃视频 | 欧美电影精品一区二区| 青娱乐精品在线视频| 欧美一区二区福利视频| 麻豆视频观看网址久久| 国产欧美一区二区在线| 99久久综合国产精品| 午夜精品久久久久久久99水蜜桃 | 色就色 综合激情| 午夜精品成人在线视频| 久久女同互慰一区二区三区| 色诱视频网站一区| 久久国产成人午夜av影院| 日韩欧美一区二区在线视频| 日韩精品亚洲一区| 亚洲欧洲日韩av| 26uuu亚洲| 欧美精品一二三| 91小视频免费观看| 久久se精品一区精品二区| 国产精品久久久久久户外露出 | 色综合久久66| 高清shemale亚洲人妖| 亚洲成av人片一区二区梦乃| 国产三级一区二区| 宅男在线国产精品| 91成人网在线| 在线欧美日韩国产| 国产尤物一区二区| 日本成人在线网站| 亚洲国产日韩a在线播放性色| 国产精品视频九色porn| 精品免费日韩av| 精品福利av导航| 日韩免费视频一区| 精品成人私密视频| 久久久久国产精品麻豆ai换脸| 日韩视频中午一区| 欧美性猛交xxxx乱大交退制版| 欧美在线观看视频一区二区| 色婷婷亚洲婷婷| 欧美日韩国产美女| 日韩你懂的在线播放| 久久久综合视频| 欧美美女一区二区在线观看| 91国产丝袜在线播放| 欧美一级片在线| 精品国产髙清在线看国产毛片 | 欧美一级片在线看| 国产亚洲欧美在线| 国产日产亚洲精品系列| 亚洲综合丁香婷婷六月香| 一区二区在线看| 麻豆极品一区二区三区| 九九久久精品视频| 91在线看国产| 欧美一级生活片| 亚洲精品日韩专区silk| 国内精品国产成人| 欧美高清dvd| 亚洲一区二区高清| 成人一区在线观看| 精品国产一区二区三区忘忧草| 国产精品久久久久影院色老大| 日韩成人免费在线| 成人激情午夜影院| 欧美国产精品中文字幕| 紧缚奴在线一区二区三区| 色拍拍在线精品视频8848| 国产亚洲综合av| 老司机精品视频一区二区三区| 欧美视频中文字幕| 午夜视频一区在线观看| 色8久久精品久久久久久蜜| 国产女人水真多18毛片18精品视频| 视频一区在线播放| 91精品国产欧美日韩| 午夜精品久久久久久久蜜桃app| 东方欧美亚洲色图在线| 国产精品久久久久桃色tv| 国产九色sp调教91| 中文字幕色av一区二区三区| 99久久精品99国产精品| 综合久久一区二区三区| 欧美在线一二三四区| 蜜臀va亚洲va欧美va天堂| 精品久久五月天| 成人美女视频在线看| 亚洲高清久久久| 久久久99免费| 欧美日精品一区视频| 青青草国产成人av片免费| 中文字幕国产一区| 欧美日韩国产乱码电影| 成人av网在线| 裸体在线国模精品偷拍| 亚洲激情在线播放| 日韩欧美一区二区在线视频| 99re在线视频这里只有精品| 极品销魂美女一区二区三区| 国产精品水嫩水嫩| 日韩女优av电影| 欧美日韩一区 二区 三区 久久精品| 久久国产麻豆精品| 夜夜精品浪潮av一区二区三区| 日韩美女天天操| 欧美美女激情18p| 色婷婷av一区| 色综合一区二区三区| 国产成人午夜精品影院观看视频| 一区二区高清视频在线观看| 国产欧美日韩三区| 久久午夜国产精品| 日韩欧美美女一区二区三区| 日本丰满少妇一区二区三区| 91一区二区在线| 91在线视频播放| 在线观看亚洲一区| 欧美视频中文字幕| 欧美欧美欧美欧美| 日韩三级中文字幕| 久久久精品日韩欧美| 国产三级精品在线| 亚洲男人天堂一区| 亚洲国产精品久久一线不卡| 日韩 欧美一区二区三区| 美女免费视频一区| 成人综合在线视频| 一本色道亚洲精品aⅴ| 3d动漫精品啪啪| 久久精品视频免费| 亚洲欧美日韩中文字幕一区二区三区 | 另类综合日韩欧美亚洲| 国产成a人亚洲| 91精品国产欧美一区二区18 | 国产91精品一区二区麻豆网站| 国产suv精品一区二区6| 欧美日韩一区高清| 欧美sm美女调教| 亚洲成a人片在线观看中文| 狠狠色丁香九九婷婷综合五月 | 成人网男人的天堂| 欧美三级在线看| 亚洲少妇30p| 国产在线不卡一区| 欧美一区二区性放荡片| 国产精品久久三| 国产成都精品91一区二区三| 8v天堂国产在线一区二区| 国产精品久久久久精k8| 国产乱码精品1区2区3区| 欧美人与禽zozo性伦| 中文字幕在线一区二区三区| 久久精品国产精品亚洲红杏| 337p亚洲精品色噜噜噜| 亚洲人成影院在线观看| jlzzjlzz国产精品久久| 久久久久久亚洲综合影院红桃| 奇米在线7777在线精品| 欧美精品一卡二卡| 加勒比av一区二区| 久久九九国产精品| 成人美女在线视频| 亚洲欧美日本在线| 欧美色图激情小说| 日韩精品亚洲专区| 久久久久97国产精华液好用吗| 国内精品免费在线观看| 久久日韩粉嫩一区二区三区| 成人午夜av电影| 亚洲一区二区三区四区五区黄| 91福利资源站| 国产中文字幕精品| 综合av第一页| 欧美日韩国产一级| 久草这里只有精品视频| 国产日产欧美一区| 欧美精品乱码久久久久久| 毛片不卡一区二区| 亚洲精品国产成人久久av盗摄| 91精品在线一区二区| 99久精品国产| 国产精品一二三四五| 亚洲夂夂婷婷色拍ww47| 国产亚洲精品bt天堂精选| 欧美猛男男办公室激情| 成人avav在线| 韩国理伦片一区二区三区在线播放| 国产精品国产三级国产普通话99 | 色悠久久久久综合欧美99| 久久99久久精品| 午夜精彩视频在线观看不卡| 一区二区中文视频| 精品国产污污免费网站入口| 欧美日韩一区二区欧美激情| 91色综合久久久久婷婷| 国产·精品毛片| 成人久久久精品乱码一区二区三区| 青青草91视频|