做個商城網(wǎng)站要多少錢農(nóng)產(chǎn)品營銷方案
前言:
許多游戲都可以通關(guān)勝利,但是貪吃蛇不一樣。貪吃蛇,因貪而生,因貪而亡。人生也是一樣,千萬不要倒在“貪”字上。
游戲Java知識:變量、數(shù)據(jù)類型、判斷語句、循環(huán)結(jié)構(gòu)、類的繼承、簡單窗口創(chuàng)建、圖形圖片的繪制、雙緩存、鼠標事件、鍵盤事件
代碼運行環(huán)境:jdk-14.0.2
主要功能:
1.按空格鍵開始游戲、暫停游戲或重新開始游戲
2.方向鍵控制蛇移動方向。w,a,s,d
3.蛇吃掉食物可以增長,并添加游戲分數(shù)(不會加快游戲速度)。
4.蛇咬到自己會結(jié)束游戲
5.蛇撞到游戲區(qū)域外會自動從對面過來。
游戲素材包:
游戲代碼框架:
游戲代碼:
1.GameWin(窗口類):
package com.sxt;import Obj.BodyObj; import Obj.FoodObj; import Obj.HeadObj;import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List;public class GameWin extends JFrame {//游戲狀態(tài) 0未開始 1游戲中 2暫停 3失敗 4通關(guān) 5.失敗后重新開始public static int state = 0;//分數(shù)public int score = 0;//定義雙緩存的圖片Image offScreenImage = null;//窗口寬高int winWidth = 800;int winHeight = 600;//蛇頭的對象HeadObj headObj = new HeadObj(GameUtils.rightImg, 60, 570, this);//蛇身的集合public List<BodyObj> bodyObjsList = new ArrayList<>();//食物public FoodObj foodObj = new FoodObj().getFood();public void launch() {//設(shè)置窗口是否可見this.setVisible(true);//設(shè)置窗口的大小this.setSize(winWidth, winHeight);//設(shè)置窗口的位置在屏幕上居中this.setLocationRelativeTo(null);//設(shè)置窗口的標題this.setTitle("貪吃蛇");//蛇身初始化bodyObjsList.add(new BodyObj(GameUtils.bodyImg, 30, 570, this));bodyObjsList.add(new BodyObj(GameUtils.bodyImg, 0, 570, this));//鍵盤事件this.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_SPACE) {switch (state) {case 0://未開始state = 1;break;case 1://游戲中state = 2;repaint();break;case 2://游戲暫停state = 1;break;case 3://失敗后重新開始state = 5;break;default:break;}}}});while (true) {if (state == 1) {//游戲中才調(diào)用repaint();}//失敗重啟if (state == 5) {state = 0;resetGame();}//線程休眠try {//1秒1000毫秒Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}}}@Overridepublic void paint(Graphics g) {//初始化雙緩存圖片if (offScreenImage == null) {offScreenImage = this.createImage(winWidth, winHeight);}//獲取圖片對應(yīng)的grapics對象Graphics gImage = offScreenImage.getGraphics();//灰色背景gImage.setColor(Color.gray);gImage.fillRect(0, 0, winWidth, winHeight);//網(wǎng)格線gImage.setColor(Color.BLACK);//for循環(huán)橫線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 = bodyObjsList.size() - 1; i >= 0; i--) {bodyObjsList.get(i).paintSelf(gImage);}//繪制蛇頭headObj.paintSelf(gImage);//食物繪制foodObj.paintSelf(gImage);//繪制分數(shù)GameUtils.drawWord(gImage, score + "分", Color.BLUE, 50, 650, 300);//繪制提示語gImage.setColor(Color.gray);prompt(gImage);//將雙緩存圖片繪制到窗口中g(shù).drawImage(offScreenImage, 0, 0, null);}//繪制提示語void prompt(Graphics g) {//未開始if (state == 0) {g.fillRect(120, 240, 400, 70);GameUtils.drawWord(g, "按下空格開始游戲", Color.yellow, 35, 150, 290);}//游戲暫停if (state == 2) {g.fillRect(120, 240, 400, 70);GameUtils.drawWord(g, "游戲暫停", Color.yellow, 35, 150, 290);}//游戲失敗if (state == 3) {g.fillRect(120, 240, 400, 70);GameUtils.drawWord(g, "咬到自己,游戲失敗", Color.red, 35, 150, 290);}//通關(guān)if (state == 4) {g.fillRect(120, 240, 400, 70);GameUtils.drawWord(g, "達成條件,游戲通關(guān)", Color.green, 35, 150, 290);//游戲暫停if (state == 2) {g.fillRect(120, 240, 400, 70);GameUtils.drawWord(g, "游戲暫停", Color.yellow, 35, 150, 290);}}}//游戲重置void resetGame() {//關(guān)閉當前窗口this.dispose();//開啟新窗口String[] args = {};main(args);}public static void main(String[] args) {GameWin gameWin = new GameWin();gameWin.launch();} }
2.GameUtils(工具類):
package com.sxt;import java.awt.*;//工具類 public class GameUtils {//圖片的種類//蛇頭public static Image upImg = Toolkit.getDefaultToolkit().getImage("img/up.png");public static Image downImg = Toolkit.getDefaultToolkit().getImage("img/down.png");public static Image leftImg = Toolkit.getDefaultToolkit().getImage("img/left.png");public static Image rightImg = Toolkit.getDefaultToolkit().getImage("img/right.png");//蛇身public static Image bodyImg = Toolkit.getDefaultToolkit().getImage("img/body.png");//食物public static Image foodImg = Toolkit.getDefaultToolkit().getImage("img/food.png");//繪制文字public static void drawWord(Graphics g, String str, Color color, int size, int x, int y) {g.setColor(color);g.setFont(new Font("仿宋", Font.BOLD, size));g.drawString(str, x, y);} }