😻Java撰寫"諸神黃昏"小游戲
此游戲歷經10800(3小時)秒獨具匠心的精心打造,全人工撰寫,使用最通俗簡單的陳述句撰寫“史詩級”作品🐕,沒錯,它就是我們的"諸神黃昏"(貪吃蛇)小游戲😏,正文:主要就是通過java撰寫一個簡單的貪吃蛇🐍游戲,有關卡模式和無盡模式,并將此游戲打包,變成.exe程式,并且可以通過玩家手動自由更換貪吃蛇的皮膚,比如一下皮膚(有興趣的可以直接下載原始碼以及EXE打包軟體),主要還是教會大家如何把自己辛辛苦苦撰寫的小程式小游戲變成一個exe檔案(專案每行都有注釋,人人都可以看懂喲)🤗,

一、代碼以及效果展示
這里展示部分代碼,需要的直接去我上傳資源處直接下載整個專案即可😪
/*
* 畫板類,游戲的整體框架設定以及內容展示(游戲啟動類)
* */
public class GameFrame extends JFrame {
//設定通關分數
public static int maxNum=30;
//定義視窗的寬高
int GFWidth=800;
int GFHeight=600;
//通過設定快取解決視窗閃動
Image buffer;
//游戲狀態 0未開始,1開始,2暫停 3通關 4.游戲失敗 5.重新游戲 6.關卡模式 7.無盡模式 8.無盡模式開始
public static int status=0;
//積分
public int score=0;
//創建🐍物件
Snake snake=new Snake(GameUtils.rightImg,60,570,this);
//創建設身體
public List<SnakeBody> list=new ArrayList<SnakeBody>();
//創建事務
public FoodObj foodObj=new FoodObj().getFood();
//構造器
public GameFrame(){
//設定視窗大小
setSize(GFWidth,GFHeight);
//設定是否顯示
setVisible(true);
//設定居中顯示
setLocationRelativeTo(null);
//設定標題名
setTitle("諸神黃昏?1.0");
//設定游戲圖示
setIconImage(ImgTool.getimg("src/com/yjxxt/img/snake.png"));
//設定程式關閉隨視窗同時關閉
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//設定大小不可變
setResizable(false);
//初始化兩個🐍身體
list.add(new SnakeBody(GameUtils.bodyImg,30,570,this));
list.add(new SnakeBody(GameUtils.bodyImg,0,570,this));
//設定面板鍵盤監聽
this.addKeyListener(new KeyAdapter() {
//重寫鍵盤監聽方法
@Override
public void keyPressed(KeyEvent e) {
//判斷是否是空格
if(e.getKeyCode()==KeyEvent.VK_SPACE){
//判斷游戲狀態
switch(status){
//游戲未開始--開始
case 0:status=1;break;
//游戲開始--暫停
case 1:status=2;repaint();break;
//游戲暫停---繼續
case 2:status=1;break;
//游戲通關--下一關
//case 3:status=5;repaint();score=0;break;
case 3:if(GameUtils.level==3&&score==maxNum){
status=7;
}else{
status=6;
}
repaint();
score=0;break;
//游戲死亡--重新開始
case 4:status=5;repaint();score=0;break;
//通關后空格下一關
case 6:status=1;repaint();score=0;break;
//無盡模式
case 7:status=8;repaint();score=0;break;
default:break;
}
}
}
});
//重復重繪頁面
while(true){
//游戲開始才會不斷重繪頁面
if(status==1||status==8){
//重繪頁面
repaint();
}
//重新開始
if(status==5){
//5代表重新游戲,將游戲狀態設定為0未開始游戲
status=0;
//重啟程式
reGame();
}
//下一關(只有三關)
if(status==6&&GameUtils.level!=3){
//設定游戲關卡加一
GameUtils.level++;
//設定游戲狀態開始
status=1;
reGame();
}
//無盡模式
if(status==7){
//開啟無盡模式
status=8;
GameUtils.level=0;
reGame();
}
//休眠
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics g) {
//初始化快取圖片
if(buffer==null){
buffer=this.createImage(GFWidth,GFHeight);
}
//獲取快取空白圖片的畫筆物件
Graphics gImage=buffer.getGraphics();
gImage.setColor(Color.gray);
gImage.fillRect(0,0,GFWidth,GFHeight);
gImage.setColor(Color.black);
for (int i = 0; i <=20; i++) {
gImage.drawLine(0,i*30,600,i*30);
gImage.drawLine(i*30,0,i*30,600);
}
//畫蛇身(倒序遍歷防止身體重疊)
for (int i = list.size()-1; i >=0; i--) {
list.get(i).paintSelf(gImage);
}
//畫蛇頭
try{
//System.out.println("努力加載~~");
snake.paintSelf(gImage);
}catch (Exception e){
System.out.println(e);
}
//畫食物
foodObj.paintSelf(gImage);
//畫關卡
System.out.println(status+"-----"+score);
if(status==8||(status==4&&GameUtils.level==0)){
GameUtils.drawWord(gImage,"無盡模式",Color.orange,40,610,260);
}else{
GameUtils.drawWord(gImage,"第"+GameUtils.level+"關",Color.orange,40,650,260);
}
//畫分數
GameUtils.drawWord(gImage,score+"分",Color.GREEN,50,650,330);
//畫標簽
GameUtils.drawWord(gImage,"每日小新",Color.PINK ,30,630,570);
GameUtils.drawWord(gImage,"w:上 s:下",Color.cyan ,30,630,450);
GameUtils.drawWord(gImage,"a:左 d:右",Color.cyan ,30,630,480);
//繪制提示語
gImage.setColor(Color.gray);
startPaint(gImage);
//最后將畫好的也面一次性全部展現出來
g.drawImage(buffer,0,0,null);
}
//游戲準備畫面
public void startPaint(Graphics g){
//未開始
if(status==0){
g.fillRect(120,240,400,70);
//畫提示語
GameUtils.drawWord(g,"按下空格開始游戲",Color.yellow,35,150,290);
}
//暫停
if(status==2){
g.fillRect(120,240,400,70);
//畫提示語
GameUtils.drawWord(g,"按下空格繼續游戲",Color.PINK,35,150,290);
}
//通關
if(status==3){
g.fillRect(120,240,400,70);
if(GameUtils.level==3){
GameUtils.drawWord(g,"恭喜全部通關,進入無盡模式!",Color.yellow,35,150,290);
//GameUtils.level=0;
}else{
//畫提示語
GameUtils.drawWord(g,"恭喜通關!空格進入下一關",Color.yellow,35,150,290);
}
}
//失敗
if(status==4){
g.fillRect(120,240,400,70);
//畫提示語
GameUtils.drawWord(g,"小垃圾,Space重來吧~",Color.yellow,35,150,290);
}
}
//重啟游戲
public void reGame(){
//關閉當前視窗
this.dispose();
//開啟新視窗
String[] args={};
main(args);
}
public static void main(String[] args) {
GameFrame gameFrame=new GameFrame();
}
}
初始皮膚展示

皮膚版本演示(皮膚隨意更改)

二、專案打成Jar包
拿到原始碼后用IDea打開即可,先將專案達成jar包,之后才能通過Jsmooth將jar包打包成我們雙擊就能運行的程式
1、第一步 點擊File,選擇Project Structure

2、依次選擇如下

3、選擇打包位置與名字

4、選擇專案和啟動類

5、設定完畢后,點擊Build編譯jar包



6、啟動測驗



那么jar包變成功了!😛😜
三、利用JSmooth生成EXE
1、啟動JSmooth

2、配置設定




編譯后,在你指定的位置應該有一個exe檔案,這里我放在一個桌面檔案夾里,此時再將專案里的圖片檔案加img抽離出來,方便更換圖片,也就是先換皮膚效果了,

四、換皮膚展示
src 檔案夾里存放的是圖片,大家可以隨意替換,只要圖片名字注意一下就行,這樣也就可以隨便發給別人完啦😋

最后代碼和已經打包好的專案全部已經上傳,有需要的自己下載~拜拜😋
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400382.html
標籤:其他

此游戲歷經10800(3小時)秒獨具匠心的精心打造,全人工撰寫,使用最通俗簡單的陳述句撰寫“史詩級”作品🐕,沒錯,它就是我們的"諸神黃昏"(貪吃蛇)小游戲😏,正文:主要就是通過java撰寫一個簡單的貪吃蛇🐍游戲,有關卡模式和無盡模式,并將此游戲打包,變成.exe程式,并且可以通過玩家手動自由更換貪吃蛇的皮膚,比如一下皮膚(有興趣的可以直接下載原始碼以及EXE打包軟體),主要還是教會大家如何把自己辛辛苦苦撰寫的小程式小游戲變成一個exe檔案(專案每行都有注釋,人人都可以看懂喲)🤗,