使用ImageIcon up = new ImageIcon("up.png");后Frame框架无法加载图片

SnakePanel类:

package com.luban.snake;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;

public class SnakePanel extends JPanel implements KeyListener,ActionListener {
//加载所有的图片
ImageIcon up = new ImageIcon(“up.png”);
ImageIcon down = new ImageIcon(“down.png”);
ImageIcon left = new ImageIcon(“left.png”);
ImageIcon right = new ImageIcon(“right.png”);
ImageIcon title = new ImageIcon(“title.jpg”);
ImageIcon food = new ImageIcon(“food.png”);
ImageIcon body = new ImageIcon(“body.png”);

//蛇的数据结构的设计
int[] snakex = new int[750];
int[] snakey = new int[750];
int len=3;
String direction = "R"; //R右 L左 U上 D下

//食物的数据
Random r = new Random();
int foodx = r.nextInt(34)*25+25;
int foody = r.nextInt(24)*25+75;

//游戏是否开始
boolean isStarted = false;

//游戏是否失败
boolean isFaild = false;

Timer timer = new Timer(150, this);

//统计分数
int score =0;



public SnakePanel(){
    this.setFocusable(true);
    initSnake();//放置静态蛇
    this.addKeyListener(this);//添加键盘监听接口
    timer.start();
}

//初始化蛇
public void initSnake(){
    isStarted = false;
    isFaild=false;
    len=3;
    direction="R";
    snakex[0] = 100;
    snakey[0] = 100;
    snakex[1] = 75;
    snakey[1] = 100;
    snakex[2] = 50;
    snakey[2] = 100;
}

public void paint(Graphics g){
    //设置画布的背景颜色
    this.setBackground(Color.BLACK);
    g.fillRect(25, 75, 850, 600);
    //设置标题
    title.paintIcon(this, g, 25, 11);

    //画蛇头
    if(direction.equals("R")){
        right.paintIcon(this, g, snakex[0], snakey[0]);
    }else if(direction.equals("L")){
        left.paintIcon(this, g, snakex[0], snakey[0]);
    }else if(direction.equals("U")){
        up.paintIcon(this, g, snakex[0], snakey[0]);
    }else if(direction.equals("D")){
        down.paintIcon(this, g, snakex[0], snakey[0]);
    }
    //画蛇身
    for(int i=1;i<len;i++){
        body.paintIcon(this, g, snakex[i], snakey[i]);
    }

    //画开始提示语
    if(!isStarted){
        g.setColor(Color.WHITE);
        g.setFont(new Font("arial", Font.BOLD, 30));
        g.drawString("Press Space to Start/Pause", 300, 300);
    }

    //画失败提示语
    if(isFaild){
        g.setColor(Color.WHITE);
        g.setFont(new Font("arial", Font.BOLD, 30));
        g.drawString("Game Over, Press Space to Start", 300, 300);
    }
    //画食物
    food.paintIcon(this, g, foodx, foody);

    //分数和长度的统计
    g.setColor(Color.WHITE);
    g.setFont(new Font("arial",Font.PLAIN,15));
    g.drawString("Score:"+score, 750, 30);
    g.drawString("Length:"+len, 750, 50);
}

@Override
public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();
    if(keyCode == KeyEvent.VK_SPACE){
        if(isFaild){
            initSnake();
        }else{
            isStarted = !isStarted;
        }

// repaint();
}else if(keyCode == KeyEvent.VK_UP && !direction.equals(“D”)){
direction=“U”;
}else if(keyCode == KeyEvent.VK_DOWN && !direction.equals(“U”)){
direction=“D”;
}else if(keyCode == KeyEvent.VK_LEFT && !direction.equals(“R”)){
direction=“L”;
}else if(keyCode == KeyEvent.VK_RIGHT && !direction.equals(“L”)){
direction=“R”;
}
}

@Override
public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub

}

/*
 * 1.重新定个闹钟
 * 2.蛇移动
 * 3.重画
 * */
@Override
public void actionPerformed(ActionEvent e) {

    timer.start();

    if(isStarted && !isFaild){
        //移动身体
        for(int i=len;i>0;i--){
            snakex[i] = snakex[i-1];
            snakey[i] = snakey[i-1];
        }
        //头移动
        if(direction.equals("R")){
            //横坐标 +25
            snakex[0] = snakex[0]+25;
            if(snakex[0] >850){
                snakex[0] = 25;
            }

        }else if(direction.equals("L")){
            //横坐标 -25
            snakex[0] = snakex[0]-25;
            if(snakex[0] <25){
                snakex[0] = 850;
            }

        }else if(direction.equals("U")){
            //纵坐标 -25
            snakey[0] = snakey[0] -25;
            if(snakey[0] <75){
                snakey[0] = 650;
            }

        }else if(direction.equals("D")){
            //纵坐标 +25
            snakey[0] = snakey[0] +25;
            if(snakey[0]>650){
                snakey[0] = 75;
            }
        }
        //吃食物的逻辑
        if(snakex[0] == foodx && snakey[0] == foody){
            len++;
            score++;
            foodx = r.nextInt(34)*25+25;
            foody = r.nextInt(24)*25+75;
        }
        //判断游戏失败
        for(int i=1;i<len;i++){
            if(snakex[0] == snakex[i] && snakey[0] == snakey[i]){
                isFaild = true;
            }
        }
    }
    repaint();

}

}

Snake 类:

package com.luban.snake;

import javax.swing.JFrame;

public class Snake {

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setBounds(400, 200, 900, 720);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    SnakePanel panel = new SnakePanel();
    frame.add(panel);


    frame.setVisible(true);

}

}

图片无法显示:
在这里插入图片描述
在这里插入图片描述不知道是什么原因添加的图片无法显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值