「如何用java写游戏」java 写游戏

博主:adminadmin 2022-12-05 00:03:07 69

今天给各位分享如何用java写游戏的知识,其中也会对java 写游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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开发游戏,因为Java这个语言是面向对象的语言对代码进行了大量的封装来达到模块组件可复用的目的,这也导致了它相对于面向过程的C,C++这种更偏向于底层的语言来说运行速度是偏慢的,Java更偏向于做服务端方面的工作,做电商网站,公司企业级的后台系统,因为Java语言的特点使其开发的系统具有较高的稳定性和安全性以及最重要的可维护性。

怎样用JAVA做游戏?面向对象的它和C#,Winform的区别?

用任务语言做游戏,都不是一下就可以实现的!

需要你有扎实的基本功!

java,c#都是面向对象的,就是对于他们而言,万事万物都可以以一个对象来理解,而万事万物的特性就是这个对象的属性,万事万物的一些特长就是这个对象自身的方法!

c#出自于微软,前身基本是java为原型,初期上手比较容易,在很多项目中,开发周期相对java而言要短很多!C#本身包含很多的控件,在开发中可以直接拿来使用!

java出自sun公司,在很大程度上讲求开源,所以它的应用相对来说较广!因为它有很多的社区支持,同时由于是开源,所以在网上能找到很多可用的资源,这一点对于初学者来说,是一个比较大的优势!

怎样自己动手做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;i10;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;i10;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;i10;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;i10;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做这些小游戏, 可以使用下面几种Java自带的图形界面框架

Awt 适合内存较小, 配置较低的嵌入式系统等,组件较少, 性能好,资源消耗低.

Swing 适合PC等, 组件较丰富, 内存占用较大, 但是跨平台性优越

JavaFX 这个是比较强大的框架了,组件比Swing更丰富,比如添加了 日期选择组件, WebView组件, 还支持3D和 动画. 并且多多媒体支持良好. 但是相关资料比Swing等少

既然学过Java Web 那么对网页编程还是有了解吧,  HTML+CSS+JS 也可以开发出小游戏,浏览器可以显示,  放入JavaFX的WebView组件也可以显示出来

推荐使用JavaFX 或者 Web ,因为这两者都很好做到了分离. JavaFX也可以分离出FXML文件,CSS文件,Java文件. 当然也可以采用最稳妥的Swing来开发,毕竟Swing的图书教程很多.

推荐书籍

Java 2D游戏编程入门  Java游戏编程原理与实践教程

JavaFX 游戏程式设计 第三版

其实游戏算法都一样, 在Swing上好了弄透彻了, 也可以轻松移植到JavaFX或者网页上

如何用Java语言写一个贪吃蛇游戏

设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

在蛇身移动时进一步做吃掉食物、撞墙、撞到自己的处理。这是游戏的主要逻辑。

最后,游戏结束我们弹出一个对话框提示是否保存游戏得分。我们制作了排行榜信息,只保留前10名的游戏得分。首先定义了一个实现Comparable接口的游戏得分类,按得分高,时间最早来排序。

游戏结束时保存得分信息,看是否进入到排行榜中。而之前在初始化排行榜组件时就会加载游戏排行榜信息。

通过保存和读取排行榜信息,我们也熟悉一下文件读取操作,还有集合、排序算法的功能。

关于如何用java写游戏和java 写游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-05,除非注明,否则均为首码项目网原创文章,转载请注明出处。