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

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

?? gamepanel.java

?? 龍與地下城游戲(小型)的設計與實現。主要是隨機產生地牢
?? JAVA
字號:
package dungeonsanddragons.game;import dungeonsanddragons.model.Castle;import dungeonsanddragons.model.Door;import dungeonsanddragons.model.Exit;import dungeonsanddragons.model.Player;import dungeonsanddragons.model.Room;import dungeonsanddragons.model.Showable;import dungeonsanddragons.model.Thing;import dungeonsanddragons.model.monsters.Monster;import dungeonsanddragons.model.weapons.Weapon;import java.awt.Graphics;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.io.IOException;import java.util.Date;import javax.swing.JOptionPane;import javax.swing.JPanel;/** * The panel showing the game board * and controlling the game, the movements and the drawing of the board * @author Sandra Nilsson */public class GamePanel extends JPanel implements KeyListener {    /**     * The castle that decribes this current board     */    private Castle c;    /**     * The current player     */    private Player p;    /**     * The status panel     */    private GameStatus statusPanel;     private Date start;           /**     * Creates a new memory panel, reads the images from file and creates a new board     */    public GamePanel(GameStatus gs) {        this.addKeyListener(this);        this.setFocusable(true);        this.statusPanel = gs;        createBoard();        setIgnoreRepaint(true);      start = new Date();    }    /**     * Method to paint on the panel     * This method is called automatically by the system when we tell the paint to repaint itself.     * Overrides paint in the Canvas object     * @param graphics the graphics object to paint on     */    public void paintComponent(Graphics graphics) {        //Do not change this one        draw();    }    /**     * Method to draw the game board according to the current state of the game     **/    public void draw() {        try {            //Get the graphics object of this panel            Graphics g = this.getGraphics();            //Draw the background image (the rooms);            g.drawImage(c.getCastleImage(), 0, 0, GameFrame.ROOM_SIZE * GameFrame.SIZE, GameFrame.ROOM_SIZE * GameFrame.SIZE, this);            //Draw all room items            Room[][] rooms = c.getRooms();            for (int i = 0; i < rooms.length; i++) {                for (int j = 0; j < rooms[i].length; j++) {                    if (rooms[i][j].getItem() != null) {                        rooms[i][j].getItem().draw(g);                    }                }            }            //Draw the player            p.draw(g);        } catch (IOException ex) {            System.out.println("Could not draw image");            ex.printStackTrace();        }    }    /**     * Method to create a new board (start the game)     * @throws java.io.IOException     */    private void createBoard() {        c = new Castle();        p = new Player();        p.setCurrentRoom(c.getStartRoom());        statusPanel.updateStatus(p);        randomizeBoard();    }        /**     * Method to reset and start the game again     */    private void restart(){        statusPanel.reset();        createBoard();    }    /**     * Method to end the game     * @param win true if the game ends by winning, false otherwise     */    private void endGame(boolean win) {        System.out.println("Ended game");         Date end=new Date();        long seconds = (end.getTime()-start.getTime())/1000;        int total = p.calculateTotalPoints(seconds);        if (win) {            int option = JOptionPane.showConfirmDialog(this, "Game has ended. It took" +seconds+ "seconds and you got " + total + " points. Play again?", "Exited", JOptionPane.YES_NO_OPTION);            if (option == JOptionPane.OK_OPTION) {               restart();            }        } else {            int option = JOptionPane.showConfirmDialog(this, "Game has ended,  you have died.I took "+total+"  points. Play again?", "LOST", JOptionPane.YES_NO_OPTION);            if (option == JOptionPane.OK_OPTION) {               restart();            } else {                this.removeKeyListener(this);            }        }    }    /**     * Mehtod to randomly distribute all items over the board     */    private void randomizeBoard() {        //Randomize monsters, treasures and weapons        c.randomizeMonsters();        c.randomizeTreasures();        c.randomizeWeapons();        c.randomizeAidKit();    }    /**     * Method called when key is typed.     * Is not needed for this application, therefore empty     * @param e the KeyEvent generated     */    public void keyTyped(KeyEvent e) {    }    /**     * Method called when any key is pressed     * Is not needed for this application, therefore empty     * @param e the KeyEvent generated     */    public void keyPressed(KeyEvent e) {    }    /**     * Method called when any key is released.     * This we use for moving the player     * @param e the KeyEvent generated     */    public void keyReleased(KeyEvent e) {        System.out.println("Key released ");        if (isMoving(e.getKeyCode())) {            Door d = p.move(e.getKeyCode());            if (d instanceof Exit) {                endGame(true);            } else if (d != null) {                draw();                Showable item = p.getCurrentRoom().getItem();                if (item != null) {                    if (item instanceof Monster) {                        if (p.canBeBitten((Monster) item)) {                            p.bitten((Monster) item);                        } else {                            ((Monster) item).kill();                                               }                        statusPanel.updateStatus(p);                    } else if (item instanceof Thing) {                        ((Thing) item).giveTo(p);                        statusPanel.updateStatus(p);                        if (item instanceof Weapon) {                            statusPanel.updateWeapons(p);                        }                    }                }                if (p.getHealthStatus() <= 0) {                    endGame(false);                }            }        }    }    /**     * Method to check if it was any of the keys that is moving the player that is typed     * @param keyCode the key code of the key press to check     * @return true if any of the keys arrow up, arrow down, arrow left or arrow right     */    private boolean isMoving(int keyCode) {        return keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_KP_LEFT || keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_KP_RIGHT || keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_KP_UP || keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_KP_DOWN;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久成人黄色影片| 石原莉奈一区二区三区在线观看| 国产在线一区二区| 欧美高清视频在线高清观看mv色露露十八 | 激情国产一区二区| 国产日产欧美一区| 丰满放荡岳乱妇91ww| 中文字幕精品一区二区精品绿巨人| 国产乱国产乱300精品| 久久精品人人做| 99久久久久久| 日韩高清国产一区在线| 精品成人在线观看| 色女孩综合影院| 极品美女销魂一区二区三区 | 国产精品看片你懂得| 99精品一区二区三区| 日本伊人色综合网| 国产日韩高清在线| 在线免费观看不卡av| 久久国产精品露脸对白| 亚洲人成小说网站色在线 | 国产精品久久久久久久久免费丝袜 | 精品国产乱码久久久久久老虎| 国产a视频精品免费观看| 日精品一区二区三区| 国产片一区二区| 制服丝袜亚洲播放| 成人免费视频国产在线观看| 石原莉奈在线亚洲三区| 亚洲精品老司机| 国产亚洲精品bt天堂精选| 欧美日韩一区二区在线视频| 国产91丝袜在线播放九色| 亚洲主播在线播放| 国产精品水嫩水嫩| 精品国产精品网麻豆系列| 久久久亚洲高清| 欧美精品 日韩| 欧美日韩国产在线观看| 91久久精品一区二区| 国产精品一区免费视频| 久久国产精品区| 韩日欧美一区二区三区| 日本欧美在线观看| 国产剧情在线观看一区二区| 亚洲老妇xxxxxx| 亚洲综合一区二区精品导航| 自拍偷拍国产亚洲| 亚洲欧美经典视频| 无吗不卡中文字幕| 日韩电影在线一区二区三区| 91浏览器在线视频| 亚洲精品一区二区三区在线观看 | 国产mv日韩mv欧美| 久久影院电视剧免费观看| 欧美日韩在线一区二区| 精品久久国产97色综合| 一区二区国产视频| jlzzjlzz亚洲日本少妇| 欧美肥妇毛茸茸| 欧美一区二区三区四区久久 | 欧美精品一区二区三| 日韩欧美一二区| 久久精品欧美一区二区三区不卡| 精品国产露脸精彩对白| 久久这里只有精品视频网| 国产亚洲成年网址在线观看| 日本一区二区三区久久久久久久久不| 久久亚洲综合色一区二区三区| 国产日韩欧美综合在线| 亚洲色图色小说| 日韩精品一二三| 国产精品综合一区二区| 99re这里只有精品首页| 91精品国产色综合久久| 久久精品免费在线观看| 亚洲人成7777| 国产精品一二一区| 欧美精品一级二级| 夜夜揉揉日日人人青青一国产精品| 久久疯狂做爰流白浆xx| 这里是久久伊人| 亚洲高清久久久| 日本道免费精品一区二区三区| 久久久久久久久久美女| 精品一区二区三区免费毛片爱| 欧美精品久久久久久久多人混战| 日韩理论在线观看| 成人不卡免费av| 亚洲欧美日韩中文播放 | 美女尤物国产一区| 日韩免费高清视频| 日韩经典中文字幕一区| 欧美日本一区二区三区四区| 亚洲精品伦理在线| 日本高清不卡视频| 首页欧美精品中文字幕| 欧美一区二区三区四区在线观看 | 国产精品伦理一区二区| 亚洲欧美经典视频| 国产精品亚洲午夜一区二区三区 | 一区二区三区四区国产精品| 欧美一区二区三区免费在线看| 不卡一区在线观看| 亚洲6080在线| 精品国产91乱码一区二区三区| 国产成人午夜精品影院观看视频 | 日韩精品欧美精品| 国产亚洲一区字幕| 欧美人狂配大交3d怪物一区 | 91亚洲国产成人精品一区二区三| 最新不卡av在线| 欧美大黄免费观看| 91首页免费视频| 国产乱码精品一品二品| 亚洲一区免费观看| 亚洲国产精品传媒在线观看| 欧美视频一区二区在线观看| 国产一区二区三区综合| 一区二区三区四区激情| 久久亚洲一级片| 欧美三级日韩在线| 99国产精品99久久久久久| 国产露脸91国语对白| 水蜜桃久久夜色精品一区的特点| 26uuu精品一区二区三区四区在线| 99久精品国产| 成人avav在线| 懂色一区二区三区免费观看| 蜜臀av一区二区在线免费观看 | 成人午夜免费av| 麻豆高清免费国产一区| 亚洲二区视频在线| 一级做a爱片久久| 一区二区三区在线观看网站| 国产精品女主播av| 国产精品久久久久四虎| 久久精品一区四区| 久久精品欧美一区二区三区不卡 | 天天综合日日夜夜精品| 亚洲亚洲精品在线观看| 亚洲自拍都市欧美小说| 亚洲精品自拍动漫在线| 亚洲视频一区二区在线| 一区二区高清免费观看影视大全| 中文字幕一区二区三区精华液| 中文字幕免费不卡| 中文字幕一区二区三区四区 | 欧洲精品一区二区三区在线观看| 欧美视频在线一区| 国产亚洲欧美在线| 亚洲国产一区在线观看| 国产精品1区2区3区在线观看| 日本丰满少妇一区二区三区| 久久亚洲精品小早川怜子| 亚洲乱码国产乱码精品精小说| 日韩国产在线观看| 在线视频一区二区三| 在线电影院国产精品| 欧美精选午夜久久久乱码6080| 在线观看欧美黄色| 欧美一区二区三区视频| 日韩一区二区电影在线| 国产欧美一区二区精品性色| 亚洲精品ww久久久久久p站| 水野朝阳av一区二区三区| 国产一区二区毛片| 欧洲av在线精品| 久久久99久久| 日韩中文字幕区一区有砖一区 | 成人动漫视频在线| 欧美一区二区私人影院日本| 中文字幕免费一区| 蜜臀久久99精品久久久画质超高清 | 免费日本视频一区| 99国产精品久久久久久久久久久| 日韩欧美一二三四区| 亚洲视频免费观看| 蜜臀久久99精品久久久画质超高清| 不卡一二三区首页| 精品成人在线观看| 天堂va蜜桃一区二区三区漫画版 | 亚洲国产一区在线观看| 91在线一区二区| 中文字幕免费不卡| 国产91精品久久久久久久网曝门| 4hu四虎永久在线影院成人| 亚洲综合无码一区二区| 97精品视频在线观看自产线路二| 日韩欧美不卡一区| 免费xxxx性欧美18vr| 欧美人与禽zozo性伦| 亚洲超碰精品一区二区| 91激情五月电影| 亚洲自拍偷拍图区| 欧美久久高跟鞋激| 蜜桃精品视频在线| 欧美www视频| 成人一区二区三区视频|