java开发游戏
① java适合开发游戏吗
java什么东西基本都能开发,只是java致命的是不能直接操作内存,这样使java在开发的时候造成很多局限性.但是java提供了本地方法,可以调用c的类库。使得功能进一步提升。又由于java对于垃圾回收机制是自动的,使得游戏在流畅性上有很大的折扣。所以java不适合开发大型游戏(除非自己实现垃圾回收等一些机制),使java能与c相比使。又因为java的初衷就不在界面和桌面游戏上。而在企业开发。因此java不适合开发大型游戏。中小型网络游戏还行。
② 用Java开发简单的游戏
使用png格式的图片,除去坦克以外部分镂空,一来看起来好看点,二来能减少不少不必要的像素绘制。
另外就是图片尽量小点,宁可作做放大处理,图片资源越小,图片纹理越小,加载到内存的过程越快。另外对于这种坦克、还有场景的一些固有的资源图片,最好不要让它自动从内存中释放掉,打开游戏的时候自己做个预加载这些资源到内存中,整个程序结束的时候再从内存中释放资源。java和objective-c都是有资源引用计数的,一开始你就给它们多添加一次引用就可以保证它们不会被自动释放了(java我不怎么用了,应该有现有的库做这种事的吧,至少做android游戏开发内存预加载常要用的。)
③ java能不能开发电脑游戏
Java虽然可以开发桌面应用但是很少用它去开发,因为这不是它的长处,一般情况下都是利用Java的移植性来开发web网站,这才是它的用武之地。
④ 用java开发小游戏
我给你个华容道的游戏参照下吧。可以自己照着做下。多看例子想想就行了。
找个游戏做的不好,不要笑话啊。
import java.awt.*;
import javax.swing.JApplet.*;
import java.awt.event.*;
import javax.swing.*;
class People extends JButton implements FocusListener
{
Rectangle rect=null;
int left_x,left_y;//按钮左上角坐标.
int width,height; //按钮的宽和高.
String name;
int number;
public People(int number,String s,int x,int y,int w,int h,HuaRongRoad road)
{
super(s);
name=s;
this.number=number;
left_x=x;
left_y=y;
width=w;
height=h;
setBackground(Color.GREEN);
road.add(this);
addKeyListener(road);
setBounds(x,y,w,h);
addFocusListener(this);
rect=new Rectangle(x,y,w,h);
}
public void focusGained(FocusEvent e)
{
setBackground(Color.red);
}
public void focusLost(FocusEvent e)
{
setBackground(Color.GREEN);
}
}
public class HuaRongRoad extends JApplet implements KeyListener,ActionListener
{
People people[]=new People[10];
Rectangle left,right,above,below;//华容道的边界
JButton restart=new JButton("restart");
public void init()
{
getContentPane().setLayout(null);
getContentPane().add(restart);
restart.setBounds(5,5,80,25);
restart.addActionListener(this);
getContentPane().setBackground(Color.white);
people[0]=new People(0,"曹操",154,54,200,200,this);
people[1]=new People(1,"关羽",154,254,200,100,this);
people[2]=new People(2,"张飞",54,254,100,200,this);
people[3]=new People(3,"刘备",354,254,100,200,this);
people[4]=new People(4,"张辽",54,54,100,200,this);
people[5]=new People(5,"曹仁",354,54,100,200,this);
people[6]=new People(6,"兵 ",54,454,100,100,this);
people[7]=new People(7,"兵 ",354,454,100,100,this);
people[8]=new People(8,"兵 ",154,354,100,100,this);
people[9]=new People(9,"兵 ",254,354,100,100,this);
people[9].requestFocus();
people[0].setForeground(Color.white);
left=new Rectangle(49,49,5,510);
right=new Rectangle(454,49,5,510);
above=new Rectangle(49,49,410,5);
below=new Rectangle(49,554,410,5);
}
public void paint(Graphics g)
{ //华容道的边界
super.paint(g);
g.setColor(Color.cyan);
g.fillRect(49,49,5,510);
g.fillRect(454,49,5,510);
g.fillRect(49,49,410,5);
g.fillRect(49,554,410,5);
//
g.drawString("单击,按方向箭头移动",100,20);
g.setColor(Color.red);
g.drawString("曹操到达该位置",110,300);
}
public void keyPressed(KeyEvent e)
{
People man=(People)e.getSource();
man.rect.setLocation(man.getBounds().x,man.getBounds().y);
if(e.getKeyCode()==KeyEvent.VK_DOWN)
{
man.left_y=man.left_y+100; //向下前进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_y=man.left_y-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(below))
{
man.left_y=man.left_y-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(e.getKeyCode()==KeyEvent.VK_UP)
{
man.left_y=man.left_y-100; //向上前进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_y=man.left_y+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(above))
{
man.left_y=man.left_y+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(e.getKeyCode()==KeyEvent.VK_LEFT)
{
man.left_x=man.left_x-100; //向左前进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_x=man.left_x+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(left))
{
man.left_x=man.left_x+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
man.left_x=man.left_x+100; //向右进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_x=man.left_x-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(right))
{
man.left_x=man.left_x-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void actionPerformed(ActionEvent e)
{
getContentPane().removeAll();
this.init();
}
}
⑤ 用java怎么编写游戏程序
这个坦白地说,非常难,但也不是不可以,就看你有没有恒心了。
需要学习JAVA SE的基础,包括AWT、SWING的一些知识,二进制与文本IO,3D图象,可能还涉及很多运算,包括声音与视频的输出,动画或flash的输出,甚至有可能要有与windows DirectX的交互。我在外面看过有JAVA游戏编程方面的书,你可以买来看看
⑥ 游戏开发跟Java开发,哪个就业前景更好呢
看你在什么城市了?游戏开发的就业一般在一线的会比较多,并且对于城市是有一定要求的,二线或者小城市没有这方面的需求,并且游戏开发是一个比较费钱的事情,这种一般是大的公司比较好,还要看你能否进入到大的公司,因为目前游戏办好不好拿。
JAVA就比较稳定了,一线和二线的城市都有,小的创业公司也需要,所以机会相对而言更多些。希望能都帮到你
⑦ 用java做一个小游戏
import java.awt.*;
public class TowerPoint
{
int x,y;
boolean 有盘子;
Disk 盘子=null;
HannoiTower con=null;
public TowerPoint(int x,int y,boolean boo)
{
this.x=x;
this.y=y;
有盘子=boo;
}
public boolean 是否有盘子()
{
return 有盘子;
}
public void set有盘子(boolean boo)
{
有盘子=boo;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void 放置盘子(Disk 盘子,HannoiTower con)
{
this.con=con;
con.setLayout(null);
this.盘子=盘子;
con.add(盘子);
int w=盘子.getBounds().width;
int h=盘子.getBounds().height;
盘子.setBounds(x-w/2,y-h/2,w,h);
有盘子=true;
con.validate();
}
public Disk 获取盘子()
{
return 盘子;
}
}
⑧ JAVA可以编写游戏吗
Java可以编写游戏, 但是编写游戏并不是Java最擅长的地方..一般的大中型游戏,可能是汇编,c#,c/c++编写.. 而后端往往使用java. 当然了纯java也可以制作一些简单的游戏的..
一: 手机游戏上面
1) J2ME 制作的游戏, 适用于 诺基亚 ,三星 等可以运行的jar格式的手机. 在诺基亚时代曾经风行一时. 但后来随着IOS和Android的兴起, J2ME逐渐衰落...
2) Android平台也可以使用Java编写程序和游戏...
二: PC游戏上面
1) awt/swing 等传统的图形界面技术, 也可以编写一些简单的游戏,比如泡泡堂, 超级玛丽等游戏,
2) javaFX 框架,支持硬件加速, 相比awt/swing更加现代化, 更强大的功能和web支持
三: 网页游戏方面
1) awt/swing 写的Applet 游戏, 曾经可以在浏览器上运行. 但是由于安全隐患, 很多浏览器已经默认不支持了.
拓展: 如果想用java制作RPG游戏或者比较复杂的游戏 , 也可以使用一些开源的游戏框架.
⑨ JAVA能写游戏吗
可以的哦,语言是工具,具体用这个工具做什么,是看编写者的想法,我们在使用的,以及零几年的时候,手机游戏多数都回弹出一个JAVA+一杯茶的图片, 那些游戏就是JAVA写的