包含Java撞墙的词条
本篇文章给大家谈谈Java撞墙,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、悬赏100!!求JAVA大手子!撞墙!挠头!该用的方法都用了还是打不开!!
- 2、参加java线上培训有哪些好处?
- 3、我们老师要一份JAVA大作业,但是我不会,想让帮帮我写一个不能太短的程序
- 4、JAVA小问题!请哪位高手加点代码改成可以撞墙就死!而且随机小方块不会在窗体外显示!
- 5、kjava网游怎么实现的
- 6、请教:JAVA游戏小问题
悬赏100!!求JAVA大手子!撞墙!挠头!该用的方法都用了还是打不开!!
最好debug一下,只能理论上帮你分析一下。
java.lang.ExceptionInInitializerError
解释:
静态初始化程序中发生意外异常的信号。抛出 ExceptionInInitializerError 表明在计算静态初始值或静态变量的初始值期间发生异常。
之前很少碰到之类异常信息提示 于是网上搜索了下 这个错误表示初始化异常和空指针错误/
查看API 其是这样描述此异常的
静态初始化程序中发生意外异常的信号。抛出 ExceptionInInitializerError 表明在计算静态初始值或静态变量的初始值期间发生异常。
[java] view plaincopyprint?
public class ExceptionInInitializerErrorextends LinkageError
可以看出 他是继承于LinkageError
对于LinkageError有给出了描述 显而易见的指出了问题的所在
LinkageError 的子类指示一个类在一定程度上依赖于另一个类;但是,在编译前一个类之后,后一个类发生了不相容的改变。
参加java线上培训有哪些好处?
参加线上Java培训有哪些好处?自从2020年开启以来,大家也慢慢的融入了在家里工作学习的状态,病毒的严峻并没有隔离住人们学习的心,这不很多教育机构纷纷开展线上教学,而昆明北大青鸟教育更好地发挥了在家里的线上学习机会,到这里不免有人会问,线上学习真的能学到知识吗?线上教学最大的优势是有一个专业的老师引导学习,规划适合你的,教你要学什么知识,带领你零基础入门。一、Java导师带你入门更容易线上Java培训班的课程都是系统全面的整体,无论个人基础的好坏,都能真正做到从零开始,循序渐进的过渡到实际项目演练,在实际项目中验证所学知识的掌握程度,这是个人自学难以企及的巨大优势。零基础小白自学Java最大的问题是不知从何下手,特别对于从没接触过编程没有开发基础的新人来说,自学Java的难度更大。从网上最常见的问题“自学Java学习路线”“自学Java应该读哪些书”“自学Java有哪些值得去的网站”等问题可以看出,想自学Java的人其实是非常迷茫的,并且通过自学的Java知识并不系统,容易造成似懂非懂,真正能够运用到工作中的知识其实少之又少,对于日后的工作用处并不大。二、专业导师为你铺路,学习更无忧参加Java培训班,都有专业的老师带课,一方面可以在讲课的过程中告知学员最正确的编程技巧和方法,让学员在最开始就能避免走弯路,课后有问题还可以直接向老师提问,在于老师沟通交流的过程中收获更多新知识。学习的过程中必然会出现各种各样的问题,特别是新进入一个领域,遇到的问题会更多。对于自学Java编程的学习者来说,除非有极大的兴趣和热情,否则每天遇到的各种各样的问题可能会把你逼疯,分分钟想要放弃,真正能通过自学Java编程坚持到最后的,只有极少数特别有天赋者。三、提高学习效率,比自己撞墙好多了据第三方机构调查统计,对于有一定基础的学习者而言,一般职业培训培养一个一般的中等程序员的周期是四个月左右,而且是必须是全职学习,除了学习外什么也不能做。那如果放到自学上那会是几年呢?2年!3年!还是遥遥无期?如果以进入IT行业,拿高薪为目标,越早入行,竞争压力越小,待遇也就越好,时间也是成本,学习周期的缩短正好弥补培训的费用,舍得为自己投资,才能收获更多!参加线上Java培训班的好处总结一下,专业老师授课与辅导,对于java学习而言,有专业的老师引导学的更快,知道学习的目标这一点很重要;学习氛围好,大家都奔着一个目标,学习同样的东西,互相学习竞争,有参照对象。对于自制力差的人来说,学习氛围和约束很重要;做项目,尤其是实训项目,能够跟着老师做实训项目和企业工作对接,更容易胜任企业真实的项目开发工作,也能更快的找到工作;直接通过订单培训进入企业的机会。
我们老师要一份JAVA大作业,但是我不会,想让帮帮我写一个不能太短的程序
我刚做了一个java的小游戏,贪吃蛇,算是草稿版,比较粗糙,不知能否帮上忙!
import java.awt.*;
import java.awt.event.*;
public class GreedSnake //主类
{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyWindow();
}
}
class MyPanel extends Panel implements KeyListener,Runnable//自定义面板类,继承了键盘和线程接口
{
Button snake[]; //定义蛇按钮
int shu=0; //蛇的节数
int food[]; //食物数组
boolean result=true; //判定结果是输 还是赢
Thread thread; //定义线程
static int weix,weiy; //食物位置
boolean t=true; //判定游戏是否结束
int fangxiang=0; //蛇移动方向
int x=0,y=0; //蛇头位置
MyPanel()
{
setLayout(null);
snake=new Button[20];
food=new int [20];
thread=new Thread(this);
for(int j=0;j20;j++)
{
food[j]=(int)(Math.random()*99);//定义20个随机食物
}
weix=(int)(food[0]*0.1)*60; //十位*60为横坐标
weiy=(int)(food[0]%10)*40; //个位*40为纵坐标
for(int i=0;i20;i++)
{
snake[i]=new Button();
}
add(snake[0]);
snake[0].setBackground(Color.black);
snake[0].addKeyListener(this); //为蛇头添加键盘监视器
snake[0].setBounds(0,0,10,10);
setBackground(Color.cyan);
}
public void run() //接收线程
{
while(t)
{
if(fangxiang==0)//向右
{
try
{
x+=10;
snake[0].setLocation(x, y);//设置蛇头位置
if(x==weixy==weiy) //吃到食物
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint(); //重绘下一个食物
add(snake[shu]); //增加蛇节数和位置
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100); //睡眠100ms
}
catch(Exception e){}
}
else if(fangxiang==1)//向左
{
try
{
x-=10;
snake[0].setLocation(x, y);
if(x==weixy==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
else if(fangxiang==2)//向上
{
try
{
y-=10;
snake[0].setLocation(x, y);
if(x==weixy==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
else if(fangxiang==3)//向下
{
try
{
y+=10;
snake[0].setLocation(x, y);
if(x==weixy==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
int num1=shu;
while(num11)//判断是否咬自己的尾巴
{
if(snake[num1].getBounds().x==snake[0].getBounds().xsnake[num1].getBounds().y==snake[0].getBounds().y)
{
t=false;
result=false;
repaint();
}
num1--;
}
if(x0||x=this.getWidth()||y0||y=this.getHeight())//判断是否撞墙
{
t=false;
result=false;
repaint();
}
int num=shu;
while(num0) //设置蛇节位置
{
snake[num].setBounds(snake[num-1].getBounds());
num--;
}
if(shu==15) //如果蛇节数等于15则胜利
{
t=false;
result=true;
repaint();
}
}
}
public void keyPressed(KeyEvent e) //按下键盘方向键
{
if(e.getKeyCode()==KeyEvent.VK_RIGHT)//右键
{
if(fangxiang!=1)//如果先前方向不为左
fangxiang=0;
}
else if(e.getKeyCode()==KeyEvent.VK_LEFT)
{ if(fangxiang!=0)
fangxiang=1;
}
else if(e.getKeyCode()==KeyEvent.VK_UP)
{ if(fangxiang!=3)
fangxiang=2;
}
else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{ if(fangxiang!=2)
fangxiang=3;
}
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
public void paint(Graphics g) //在面板上绘图
{
int x1=this.getWidth()-1;
int y1=this.getHeight()-1;
g.setColor(Color.red);
g.fillOval(weix, weiy, 10, 10);//食物
g.drawRect(0, 0, x1, y1); //墙
if(t==falseresult==false)
g.drawString("GAME OVER!", 250, 200);//输出游戏失败
else if(t==falseresult==true)
g.drawString("YOU WIN!", 250, 200);//输出游戏成功
}
}
class MyWindow extends Frame implements ActionListener//自定义窗口类
{
MyPanel my;
Button btn;
Panel panel;
MyWindow()
{
super("GreedSnake");
my=new MyPanel();
btn=new Button("begin");
panel=new Panel();
btn.addActionListener(this);
panel.add(new Label("begin后请按Tab键选定蛇"));
panel.add(btn);
panel.add(new Label("按上下左右键控制蛇行动"));
add(panel,BorderLayout.NORTH);
add(my,BorderLayout.CENTER);
setBounds(100,100,610,500);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)//按下begin按钮
{
if(e.getSource()==btn)
{
try
{
my.thread.start(); //开始线程
my.validate();
}
catch(Exception ee){}
}
}
}
JAVA小问题!请哪位高手加点代码改成可以撞墙就死!而且随机小方块不会在窗体外显示!
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
class Snake extends JFrame{
public static void main(String args[]){
new Snake();
}
Snake(){
bb p = new bb();
this.getContentPane().add(p);
p.setBackground(Color.white);
this.setBackground(Color.white);
//修改的
this.setSize(410,430);
//
this.setVisible(true);
this.addKeyListener(p);
}
}
class bb extends JPanel implements Runnable, KeyListener{
Point q = new Point();
Point body[] = new Point[10];
int nums = 4;
int director;
bb(){
for (int i = 0; i10; i++){
body[i] = new Point(0,0); //
}
//this.addKeyListener(this);
q.x = (int)(Math.random()*40);
q.y = (int)(Math.random()*40);
Thread t = new Thread(this);
t.start();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(q.x*10, q.y*10, 9, 9);
for (int i = 0; inums; i++){
g.fillRect(body[i].x*10, body[i].y*10, 9, 9);
}
}
public void keyPressed(KeyEvent e){
}
public void keyReleased(KeyEvent e){
int i = e.getKeyCode();
if(i == KeyEvent.VK_RIGHT)
director = 0;
else if(i == KeyEvent.VK_LEFT)
director = 1;
else if(i == KeyEvent.VK_DOWN)
director = 2;
else if(i == KeyEvent.VK_UP)
director = 3;
}
public void keyTyped(KeyEvent e){
}
public void run(){
while(true){
for (int i = nums - 1; i0; i--){
body[i].x = body[i - 1].x;
body[i].y = body[i - 1].y;
}
switch(director){
case 0:
body[0].x++;
break;
case 1:
body[0].x--;
break;
case 2:
body[0].y++;
break;
case 3:
body[0].y--;
break;
}
if(body[0].x == q.x body[0].y == q.y){
nums++;
q.x = (int)(Math.random()*40);
q.y = (int)(Math.random()*40);
}
repaint();
//添加的
if(body[0].x0||body[0].x=40||body[0].y0||body[0].y=40)
{
System.out.println("GameOver!");
return;
}
//---
try{
Thread.sleep(100);
}catch(Exception e){
}
}
}
}
kjava网游怎么实现的
由Java虚拟机和Java核心类所构成。
1.设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。
2.所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。
3.定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。
4.豆豆的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。
5.接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。
6.开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。
在蛇身移动时进一步做吃掉食物、撞墙、撞到自己的处理。这是游戏的主要逻辑。
7.最后,游戏结束我们弹出一个对话框提示是否保存游戏得分。我们制作了排行榜信息,只保留前10名的游戏得分。首先定义了一个实现Comparable接口的游戏得分类,按得分高,时间最早来排序。
8.游戏结束时保存得分信息,看是否进入到排行榜中。而之前在初始化排行榜组件时就会加载游戏排行榜信息。
通过保存和读取排行榜信息,我们也熟悉一下文件读取操作,还有集合、排序算法的功能。
请教:JAVA游戏小问题
那个并不是功能,而是缺陷。当按下按钮时窗口激活了按钮,所有键盘输入都给了按钮,没有给有蛇的面板。按下tab键会改变激活的目标。
在btn=new Button("begin"); 后面加一句btn.setFocusable(false);就可以解决这个问题。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Rectangle2D;
import java.util.Random;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class GreedSnake extends JPanel implements KeyListener, Runnable { //自定义面板类,继承了键盘和线程接口
private static final long serialVersionUID = 1L;
private static final int TILE_SIZE = 10;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("GreedSnake");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final GreedSnake snake = new GreedSnake();
JButton btn = new JButton(new AbstractAction("开始") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent e) {
snake.reset();
}
});
JPanel panel = new JPanel();
panel.add(btn);
btn.setFocusable(false);
frame.addKeyListener(snake); // 添加键盘监视器
frame.add(panel, BorderLayout.NORTH);
frame.add(snake, BorderLayout.CENTER);
frame.setBounds(100, 100, 610, 500);
frame.setVisible(true);
frame.validate();
}
});
}
JButton blackButton;
JButton whiteButton;
Point snake[] = new Point[20]; // 定义蛇按钮
int shu = 1; // 蛇的节数
boolean win = true; // 判定结果是输 还是赢
int weix, weiy; // 食物位置
boolean t = false; // 判定游戏是否结束
FangXiang fangxiang = FangXiang.YOU; // 蛇移动方向
int x = 0, y = 0; // 蛇头位置
Random rand = new Random();
String message = "按上下左右键控制蛇行动";
enum FangXiang {
YOU, ZUO, SHANG, XIA
}
GreedSnake() {
new Thread(this).start();
weix = rand.nextInt(10) * 60; // (0-9)*60为横坐标
weiy = rand.nextInt(10) * 40; // (0-9)*40为纵坐标
for (int i = 0; i 20; i++)
snake[i] = new Point();
setBackground(Color.cyan);
blackButton = new JButton();
blackButton.setBounds(0, 0, TILE_SIZE, TILE_SIZE);
blackButton.setBackground(Color.black);
whiteButton = new JButton();
whiteButton.setBounds(0, 0, TILE_SIZE, TILE_SIZE);
}
public void reset() { // 按下begin按钮
t=true;
shu=1;
snake[0].move(0, 0);
x = y = 0;
fangxiang = FangXiang.YOU;
}
public void run() { // 接收线程
while (true) {
if(t) {
switch(fangxiang) {
case YOU: x += 10; break;// 向右
case ZUO: x -= 10; break;// 向左
case SHANG: y -= 10; break;// 向上
case XIA: y += 10; break;// 向下
}
if (x == weix y == weiy) { // 吃到食物
shu++;
weix = rand.nextInt(10) * 60; // (0-9)*60为横坐标
weiy = rand.nextInt(10) * 40; // (0-9)*40为纵坐标
if (shu == 15) { // 如果蛇节数等于15则胜利
t = false;
win = true;
message = "YOU WIN!";
}
}
for (int i = shu; i 0; i--) { // 设置蛇节位置
snake[i].setLocation(snake[i-1]);
}
snake[0].setLocation(x, y);// 设置蛇头位置
for (int i=4;ishu;i++) { // 判断是否咬自己的尾巴
if (snake[i].equals(snake[0])) {
t = false;
win = false;
message = "GAME OVER!";
break;
}
}
if (x 0 || x = getWidth() || y 0 || y = getHeight()) { // 判断是否撞墙
t = false;
win = false;
message = "GAME OVER!";
}
repaint();// 重绘
}
try {
Thread.sleep(100); // 睡眠100ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void keyPressed(KeyEvent e) { // 按下键盘方向键
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {// 右键
if (fangxiang != FangXiang.ZUO)// 如果先前方向不为左
fangxiang = FangXiang.YOU;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if (fangxiang != FangXiang.YOU)
fangxiang = FangXiang.ZUO;
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
if (fangxiang != FangXiang.XIA)
fangxiang = FangXiang.SHANG;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
if (fangxiang != FangXiang.SHANG)
fangxiang = FangXiang.XIA;
}
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void paint(Graphics g) { // 在面板上绘图
super.paint(g);
for(int i=0;ishu;i++) {
g.translate(snake[i].x, snake[i].y);
if(i==0) blackButton.paint(g);
else whiteButton.paint(g);
g.translate(-snake[i].x, -snake[i].y);
}
g.setColor(Color.red);
g.fillOval(weix, weiy, TILE_SIZE, TILE_SIZE);// 食物
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); // 墙
g.setColor(Color.black);
if (!t) {
Rectangle2D rect = g.getFontMetrics().getStringBounds(message, g);
g.drawString(message, (getWidth()-(int)rect.getWidth())/2, (getHeight()-(int)rect.getHeight())/2);// 输出游戏成功
}
}
}
Java撞墙的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、Java撞墙的信息别忘了在本站进行查找喔。