日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Java怎么实现经典游戏泡泡堂

發布時間:2023/12/15 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 Java怎么实现经典游戏泡泡堂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要介紹“Java怎么實現經典游戲泡泡堂”,在日常操作中,相信很多人在Java怎么實現經典游戲泡泡堂問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java怎么實現經典游戲泡泡堂”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    主要設計

    • 設計游戲界面,用swing實現

    • 繪制游戲啟動界面、結束界面、地圖、主角、道具

    • 實現泡泡爆炸

    • 實現雙主角PK(積分制)

    • 實現道具掉落和相應屬性加成

    • 實現游戲音效和背景音樂

    功能截圖

    游戲啟動界面:

    游戲開始界面:

    移動效果:

    釋放泡泡

    泡泡爆炸效果:

    代碼實現

    游戲啟動類

    publicclassGameStart{
    publicstaticvoidmain(String[]args){
    
    //整個程序的入口啟動
    StartFramestartFrame=newStartFrame();
    startFrame.setVisible(true);
    }
    }

    核心監聽類

    publicclassGameListenerimplementsKeyListener{
    	privateList<?>list;
    	@Override
    	publicvoidkeyTyped(KeyEvente){
    		//TODOAuto-generatedmethodstub
    	}
    	//按下左37右39下40上38w87a65s83d68空格32enter10
    	@Override
    	publicvoidkeyPressed(KeyEvente){
    		//TODOAuto-generatedmethodstub
    		//System.out.println("keypressed"+e.getKeyCode());
    		list=ElementManager.getInstance().getElementList("play");
    		Playeroneplayer=(Player)list.get(0);
    		PlayertwoPlayer=(Player)list.get(1);
    		switch(e.getKeyCode()){
    		case65:
    			oneplayer.setLEFT(true);
    //			oneplayer.setStop(false);
    			break;
    		case87:
    			oneplayer.setUP(true);
    //			oneplayer.setStop(false);
    			break;
    		case68:
    			oneplayer.setRIGHT(true);
    //			oneplayer.setStop(false);
    			break;
    		case83:
    			oneplayer.setDOWN(true);
    //			oneplayer.setStop(false);
    			break;
    		case32:
    			oneplayer.setPk(true);
    			break;
    		case37:
    			twoPlayer.setLEFT(true);
    			break;
    		case38:
    			twoPlayer.setUP(true);
    			break;
    		case39:
    			twoPlayer.setRIGHT(true);
    			break;
    		case40:
    			twoPlayer.setDOWN(true);
    			break;
    		case10:
    			twoPlayer.setPk(true);
    			break;
    		}
    	}
    	//松開
    	@Override
    	publicvoidkeyReleased(KeyEvente){
    		//TODOAuto-generatedmethodstub
    		//System.out.println("keyreleased"+e.getKeyCode());
    		list=ElementManager.getInstance().getElementList("play");
    		Playeroneplayer=(Player)list.get(0);
    		PlayertwoPlayer=(Player)list.get(1);
    		switch(e.getKeyCode()){
    		case65:
    //			if(oneplayer.isLEFT()){
    //				oneplayer.setStop(true);
    //			}
    			oneplayer.setLEFT(false);
    			
    			break;
    		case87:
    //			if(oneplayer.isUP()){
    //				oneplayer.setStop(true);
    //			}
    			oneplayer.setUP(false);
    			break;
    		case68:
    //			if(oneplayer.isRIGHT()){
    //				oneplayer.setStop(true);
    //			}
    			oneplayer.setRIGHT(false);
    			break;
    		case83:
    //			if(oneplayer.isDOWN()){
    //				oneplayer.setStop(true);
    //			}
    			oneplayer.setDOWN(false);
    			break;	
    		case32:
    			oneplayer.setPk(false);
    			break;
    		case37:
    			twoPlayer.setLEFT(false);
    			break;
    		case38:
    			twoPlayer.setUP(false);
    			break;
    		case39:
    			twoPlayer.setRIGHT(false);
    			break;
    		case40:
    			twoPlayer.setDOWN(false);
    			break;	
    		case10:
    			twoPlayer.setPk(false);
    			break;
    		}
    	}
    }

    核心線程類

    publicclassGameThreadextendsThread{
    	//計時數據
    	privatestaticinttime;
    	privatebooleanflag=true;
    	//重構老項目
    	@Override
    	publicvoidrun(){
    		//這個循環控制游戲整體進度
    //		while(flag){
    			//死循環狀態變量進行控制
    			//1.加載地圖人物
    			loadElement();
    			//2.顯示地圖人物(流程自動化(移動,碰撞))
    			time=0;
    			loadBGM();
    			runGame();
    			//3.結束地圖
    
    
    
    			try{
    				TimeUnit.MILLISECONDS.sleep(150);
    			}catch(InterruptedExceptione){
    				//TODOAuto-generatedcatchblock
    				e.printStackTrace();
    			}
    //		}
    	}
    	//控制進度但是作為控制請不要接觸load只能通過元素管理器訪問元素
    	publicvoidloadElement(){
    		ElementManager.getInstance().load();
    	}
    	publicvoidrunGame(){
    		//這個循環控制每個關卡地圖中玩的狀態
    		ElementManagermanager=ElementManager.getInstance();
    		while(flag){
    
    			Map<String,List<SuperElement>>map=manager.getMap();
    			Set<String>set=map.keySet();
    			List<String>temp=newArrayList<>();
    			temp.addAll(set);
    			//迭代器在遍歷的過程中,迭代器中的元素不可以變化(增加或減少)
    			for(inti=temp.size()-1;i>=0;i--){
    				List<SuperElement>list=map.get(temp.get(i));
    				for(intj=0;j<list.size();j++){
    					SuperElementsuperElement=list.get(j);
    					superElement.update();
    					if(!superElement.isVisible()){
    						manager.removeElementByPx(superElement.getY(),superElement.getX());
    						list.remove(j);
    
    					}
    				}
    			}
    			//使用一個獨立的方法來進行判定
    			PK();
    
    			//游戲的流程控制
    			linkGame();
    
    
    			try{
    				TimeUnit.MILLISECONDS.sleep(100);
    			}catch(InterruptedExceptione){
    				//TODOAuto-generatedcatchblock
    				e.printStackTrace();
    			}
    			//死亡通關狀態結束runGame方法
    			overGame();
    
    
    			time++;//一秒鐘增加10
    		}
    	}
    
    	publicvoidPK(){
    		//TODOAuto-generatedmethodstub
    		List<SuperElement>players=ElementManager.getInstance().getElementList("play");
    		List<SuperElement>enemys=ElementManager.getInstance().getElementList("enemylist");
    		//進行比較
    		listPK(players,enemys);
    	}
    	publicvoidlistPK(List<SuperElement>list1,List<SuperElement>list2){
    		for(inti=0;i<list1.size();i++){
    			for(intj=0;j<list2.size();j++){
    				if(list1.get(i).gamePK(list2.get(j))){
    					list2.get(j).setVisible(false);
    
    				}
    			}
    		}
    	}
    	publicvoidoverGame(){
    		Playerplayer1=(Player)(ElementManager.getInstance().getElementList("play").get(0));
    		Playerplayer2=(Player)(ElementManager.getInstance().getElementList("play").get(1));
    		if(player1.getNum()>=1000||player2.getNum()>=1000){
    			flag=false;
    			newThread(){
    				publicvoidrun(){
    					newaudioPlay(Audio.OVER).player();
    				}
    			}.start();
    		}
    
    	}
    	//游戲的流程控制
    	publicvoidlinkGame(){
    //		Map<String,List<SuperElement>>map=
    //				ElementManager.getInstance().getMap();
    //		List<SuperElement>enemys=map.get("enemylist");
    //		//一秒鐘增加一個敵機
    //		if(time%10==0){
    //			enemys.add(Enemy.createEnemy(""));
    //		}
    		ElementManager.getInstance().linkGame(time);
    	}
    	publicstaticintgetTime(){
    		returntime;
    	}
    	publicstaticvoidsetTime(inttime){
    		GameThread.time=time;
    	}
    
    	privatevoidloadBGM(){
    		newThread(){
    			publicvoidrun(){
    				while(flag){
    					audioPlayplay=newaudioPlay(Audio.BGM);
    					play.player();
    					if(!flag){
    						play.stop();
    					}
    				}
    
    			}
    		}.start();
    
    	}
    	//敵機的創建
    	
    	
    }

    總結

    以上是生活随笔為你收集整理的Java怎么实现经典游戏泡泡堂的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。