贪吃蛇图片代码和编译出错处
后面附有完整的超全代码,希望资深人士伸出援助之手,和Java小白一起探讨,共同完成一项艰巨的任务。看了很多代码,发现,复制过来,全都错误,无法运行,不知道是不是故意为之还是没抄全别人的。
为了让java爱好者和小白们能够有个很不错的学习环境,希望老手们不要欺负小白们,老是贴一下不全的代码,甚至为了蝇头小利就搞什么购买,这就是为什么中国代码世界发展不起来,是有人故意让人知难而退。希望自身的java人士,高手们能够伸出援助之手帮助小白们,你们不缺钱,就别为了几个币扼杀java爱好者。
后续我会制作韩顺平老师的视频教程里的3大程序的全程代码展示给大家,希望高手们多多指点。韩老师是我借鉴10几个视频里教学最完美的,查了韩老师的资料,原来是清华的高材生,怪不得。其他人的不是扯淡,就是内容空洞,短这缺那的,甚至大喊大叫,故意浪费时间。
后续展示的三大程序是坦克大战,餐饮系统和聊天系统。
附上完整代码
package snake;
import javax.swing.JFrame;
public class Snake{
public static void main(String[] args){
JFrame frame = new JFrame();//创建一个游戏界面的框架
frame.setBounds(10, 10, 900, 720);//设置框架的大小
frame.setResizable(false);//设置框架大小为不能改变
//点击关闭按钮,关闭游戏界面
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SnakePanel panel = new SnakePanel();//添加画布
frame.add(panel);//添加画布
frame.setVisible(true);//允许显示游戏界面
}
}
package snake;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;
public class SnakePanel extends JPanel implements KeyListener,ActionListener{
//定义七个图片变量,代表七张图片
ImageIcon up = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\蛇头上.png");
ImageIcon down = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\蛇头下.png");
ImageIcon left = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\蛇头左.png");
ImageIcon right = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\蛇头右.png");
ImageIcon body = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\蛇身.png");
ImageIcon food = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\食物.png");
ImageIcon title = new ImageIcon("D:\\JAVA编程素材\\贪吃蛇\\游戏界面主题.png");
//蛇的每一部分
int[] snakex = new int[750];
int[] snakey = new int[750];
//随机生成食物
Random random = new Random();
//此处的数据可以根据自己的游戏界面大小来确定
int foodx = random.nextInt(34)*25+25;
int foody = random.nextInt(24)*25+75;
//设置游戏的默认属性
int len = 3;
int score = 0;
String direction = "R";//U上 D下 L左 R右
boolean isStarted = false;//判断游戏是否开始
boolean isFailed = false;//判断游戏是否结束
Timer timer = new Timer(100, this);//每100毫秒调用一次ActionPerformed
public SnakePanel(){
this.setFocusable(true);//获取焦点
this.addKeyListener(this);//监听键盘事件
setup();
timer.start();
}
public void paint(Graphics g){//画笔
this.setBackground(Color.BLACK);//设置画布背景颜色
title.paintIcon(this, g, 25, 11);//放置主题图片
g.fillRect(25, 75, 850, 650);//用画笔设置游戏方框
//画蛇头(注意判断蛇头的方向)
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", 200, 300);
}
//判断如果游戏结束显示。。。
if(!isFailed){
g.setColor(Color.WHITE);
g.setFont(new Font("arial",Font.BOLD,30));
g.drawString("Game Over!Press space to restart", 200, 300);
}
food.paintIcon(this, g, foodx, foody);//显示食物
//设置分数和蛇的长度
g.setColor(Color.WHITE);
g.setFont(new Font("arial",Font.PLAIN,15));
g.drawString("Score:"+score, 650, 37);
g.drawString("Len:"+len, 650, 57);
}
public void setup(){//游戏初始化
isStarted = false;
isFailed = false;
len = 3;
score = 0;
snakex[0] = 100;snakex[1] = 75;snakex[2] = 50;
snakey[0] = 100;snakey[1] = 100;snakey[2] = 100;
}
@Override
public void keyPressed(KeyEvent e){
//实现键盘响应
int KeyCode = e.getKeyCode();
if(KeyCode == KeyEvent.VK_SPACE){//敲击空格消除提示信息
if(isFailed){
isStarted = false;//可以将这两行放入 setup 中
isFailed = false;
setup();
} else{
isStarted = !isStarted;
}
} else if(KeyCode == KeyEvent.VK_UP && direction != "D"){
direction = "U";
}else if(KeyCode == KeyEvent.VK_DOWN && direction != "U"){
direction = "D";
}else if(KeyCode == KeyEvent.VK_RIGHT && direction != "L"){
direction = "R";
}else if(KeyCode == KeyEvent.VK_LEFT && direction != "R"){
direction = "L";
}
}
@Override
public void actionPerformed(ActionEvent e){
timer.start();//定义一个闹钟
//移动数据
if(isStarted && !isFailed){
//移动头
for(int i=len;i>0;i--){
snakex[i] = snakex[i-1];
snakey[i] = snakey[i-1];
}
//移动头
if(direction.equals("R")){
snakex[0] = snakex[0] + 25;
if(snakex[0]>850) snakex[0] = 25;
} else if(direction.equals("L")){
snakex[0] = snakex[0] - 25;
if(snakex[0]<25) snakex[0] = 850;
} else if(direction.equals("U")){
snakey[0] = snakey[0] - 25;
if(snakex[0]<75) snakex[0] = 650;
} else if(direction.equals("D")){
snakey[0] = snakey[0] + 25;
if(snakex[0]>650) snakex[0] = 75;
}
if(snakex[0]==foodx && snakey[0]==foody){//吃食物
len ++;
score ++;
foodx = random.nextInt(34)*25 + 25;
foody = random.nextInt(24)*25 + 75;
}
for(int i=1;i<len;i++){
if(snakex[0]==snakex[i] && snakey[0]==snakey[i]){
isFailed = true;
}
}
}
//重画机制
repaint();
}
@Override
public void keyTyped(KeyEvent e){}
@Override
public void keyReleased(KeyEvent e){}
}
别人发布的时候确有图片能运行,但是我抄下来的时候却有这些错误,还无法运行,因为我是刚自学几个月的小白所以无法自行解决问题,希望高手们,资深人士帮忙解决一下。