包含Java撞墙的词条

博主:adminadmin 2023-01-19 13:36:12 232

本篇文章给大家谈谈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撞墙的信息别忘了在本站进行查找喔。