114培训网欢迎您来到游戏设计交流中心!

400-850-8622

全国统一学习专线 9:00-21:00

怎么用java做游戏?

主要是用Java分支中的J2ME来写,但是J2ME中需要Java的基础知识。

现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明。

J2ME中使用到的Java基础知识:

1、Java语法基础:包括基本数据类型、关键字、运算符等等

2、面向对象的思想:类和对象的概念,继承和多态等等。

3、异常处理

4、多线程

J2ME中没有用到的Java基础知识:

1、JDK中javac和java命令的使用

2、Java基础中的很多类在J2ME中没有,或者类中的方法做了大量的精简。所以建议在J2ME中熟悉类库。

3、Applet、AWT、Swing这些知识在J2ME中根本使用不到。

简单说这么多,希望学J2ME的朋友们能少走一些弯路,不足之处希望大家积极指正和补充

1

相关问题全部

.,,,,..

我来了。

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

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

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

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

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

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

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

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

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

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

9.我是传播爱与正义的小芜同学,我的回答结束。


啊,不止一次的被问过这个问题。

作为世界上最强大的开源语言之一,Java能做任何事,写个框架?写个程序?或者说——做个游戏?

但首先你得会使用引擎——unity、虚幻,哪怕是寒霜都成,但你得会一个。

然后是最难的部分之一——模型,和贴图。一般来说,3DSMAX较多的用作游戏开发,但如果是虚幻,MAYA更方便一些。建好模型,再绘制贴图,把它扔到引擎里,*步就算完成了。

然后,绘制场景——这需要你拥有高超的关卡设计能力,这步通常需要很长时间的学习。

然后你就可以进行程序开发了,使用Java,制作主程序,再在主程序的基础上,制作条件、精灵,和任务等等。

*,再用你那高超的UI设计能力,做一个UI,除错后打包,你的游戏就算是完成了!

题主加油,等着你的游戏。

Java可以做3D游戏,可以做非常酷炫的3D游戏,性能并不比那些C++的引擎差!而开发效率又要高处好几个数量级!

为什么呢?因为游戏底层的图形渲染实质上都是OpenGL或者Direct3D,现代游戏引擎不大可能让你手动去做图形运算,复杂的东西都是交给底层的dll/so静态库文件以及GPU执行的,上层代码主要做好场景管理和逻辑控制。这也是为什么Unity3D这个引擎居然可以使用C#和作为它的游戏脚本,而从来没有人说Unity3D引擎的游戏性能差。

另外,游戏的画面,不管3D还是2D游戏,影响画面效果的主要因素是游戏素材,而不是编程语言。3D游戏又有独特的着色器语言专门负责图形特效。什么HDR、PBR、SSAO、动态模糊、次世代法线贴图,通通都是靠Shader搞定的,跟你用什么语言来写游戏逻辑没有半毛钱关系。

反观Java本身的性能,现代编程语言除了C/C++,真没有哪个敢在Java面前夸自己性能的。而且Java有众多的开源类库,凭什么我们不能用Java来做游戏呢?

诚然,Unity3D、CryEngine、Unreal这样的商业引擎不仅仅是个游戏引擎,它们还有很多成熟的配套工具和资源工厂,这是Java游戏引擎所不具备的。

java 设计自己的用户界面,通常有6个步骤,分别是哪6步?

1、分析业务需求, 理顺业务逻辑;
2, 根据业务需要考虑使用何种容器(JFrame ,Frame ,JWindow..) 需要的数量;
3, 每个容器(窗口)使用组件;
4.组件使用何种布局方式(边界布局,绝对布局,网格布局..),排列在容器(窗口)中;
5.组件中需要响应那些事件, 把事件响应代码写好,然后绑定到组件上(...)
6.调试。

java界面设计,这个界面该怎么设计啊,求高手指点啊

按照你的要求编写的Java程序如下:

import java.awt.;
import java.awt.;
import java.awt.Font;
import java.awt.;
import java.awt.event.;
import java.awt.event.;
import java.io.;
import java.io.;
import java.io.;
import java.util.Arrays;
import javax.swing.;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.;
public class CCG extends JFrame  {
 JLabel jl1=new JLabel("35选7",JLabel.LEFT);
 JLabel jl2=new JLabel("输入选号:");
 JLabel jl3=new JLabel("当前选号:");
 JLabel jl4=new JLabel();    
  jtf=new (5);
 JTextArea jta=new JTextArea(5,20);
 JButton jb1=new JButton("添加本组号码");
 JButton jb2=new JButton("验证并保存到文件");
 JPanel jp1=new JPanel();
 JPanel jp2=new JPanel();
 JPanel jp3=new JPanel();
 JPanel jp4=new JPanel();
 JPanel jp5=new JPanel();
 JPanel jp6=new JPanel();
 JPanel jp7=new JPanel();
 boolean saveFlag=false;
 CCG(){
  super("Lottery");
  jtf.(this);   
  jb1.(this);
  jb2.(this);
  jl1.setFont(new Font(null,Font.BOLD,20));
  jp1.setLayout(new (.LEFT));
  jp1.add(jl1);
  jp1.setBorder(. ());
  jp4.setLayout(new (.LEFT));
  jp4.add(jl2);jp4.add(jtf);
  jp5.setLayout(new (.LEFT));
  jp5.add(jl3);jp5.add(jl4);
  jp6.setLayout(new (.LEFT));
  jp6.add(jb1);
  jp2.setLayout(new (3,1));
  jp2.add(jp4);jp2.add(jp5);jp2.add(jp6);
  jp2.setBorder(. ());
  jp3.setLayout(new (.LEFT));
  jp3.add(jta);jp3.add(jb2);
  jp3.setBorder(. ());
  jp7.setLayout(new (2,1));
  jp7.add(jp2);
  jp7.add(jp3);
  add(jp1,.NORTH);
  add(jp7,.CENTER);
  setSize(400, 300);
  (JFrame.EXIT_ON_CLOSE);
  (null);
  (true);
 }
 @Override
 public void ( ae) {
  if(ae.getSource()==jtf){
   if(jtf.getText().trim().equals("")){
    jl4.setText("");
   }else{
    int n=Integer.parseInt(jtf.getText().trim());
    String str="";
    if(n<10)str="0"+n;
    else str=n+"";
    if(jl4.getText().trim().contains(str)){
     .(null, "输入的数重复!");
     jtf.();
     return;
    }
    int num=Integer.parseInt(str);
    if(num<1 || num>35){
     .(null, "输入的数需要在1-35之间!");
     jtf.();
     return;
    }
    if(jl4.getText().trim().equals("")){
     int t=Integer.parseInt(jtf.getText().trim());
     if(t<10) jl4.setText("0"+t);
     else jl4.setText(""+t);
    }else{
     String[]a=(jl4.getText().trim()+","+jtf.getText().trim()).split(",");
     if(a.length>7){
      .(null, "输入的数超过7个!");
      jtf.();
      return;
     }
     int []b=new int[a.length];
     for(int i=0;i<a.length;i++){
      b[i]=Integer.parseInt(a[i].trim());
     }
     Arrays.sort(b);
     String s="";
     for(int i=0;i<b.length;i++){
      if(i==b.length-1)
       if(b[i]<10)s=s+"0"+b[i];
       else s=s+b[i];
      else
       if(b[i]<10)s=s+"0"+b[i]+",";
       else s=s+b[i]+",";
     }
     jl4.setText(s);
    }
   }
  }
  if(ae.getSource()==jb1){
   jta.append(jl4.getText().trim()+"n");
   saveFlag=true;
  }
  if(ae.getSource()==jb2){
   if(saveFlag==true){
     bw = null;
    try {
     bw=new (new ("lottery.txt",true));
     String s=random();
     bw.append("本期开奖号码:"+s);
     bw.newLine();
     String[]a=jta.getText().split("n");
     for(int i=0;i<a.length;i++){
      int count=0;
      String[]b=a[i].split(",");
      String tmp="";
      for(int j=0;j<b.length;j++){
       if(s.contains(b[j].trim()))count++;
       if(j==b.length-1){
        tmp=tmp+b[j].trim();
       }else{
        tmp=tmp+b[j].trim()+",";
       }
      }
      String tmpwrite=tmp+" - "+count;   
      bw.append(tmpwrite);
      bw.newLine();
     }
     bw.flush();
     System.out.println("保存完毕!");
     saveFlag=false;
    } catch ( e) {
     e.();
    }finally{
     try {
      bw.close();
     } catch ( e) {
      e.();
     }
    }
   }
  }
 }
 public String random() {
  int []a=new int[7];
  int count=0;
  while(count<7){
   boolean flag=false;
   int tmp=(int)(Math.random()*35)+1;
   for(int i=0;i<a.length;i++){
    if(tmp==a[i]){
     flag=true;
    }
   }
   if(flag==false){
    a[count]=tmp;
    count++;
   }
  }
  Arrays.sort(a);
  String s="";
  for(int i=0;i<a.length;i++){
   if(i==a.length-1){
    if(a[i]<10){
     s=s+"0"+a[i];
    }else{
     s=s+a[i];
    }
   }else{
    if(a[i]<10){
     s=s+"0"+a[i]+",";
    }else{
     s=s+a[i]+",";
    }
   }
  }
  return s;
 }
 public static void main(String[] args) {
  new CCG();
 }
}

运行结果:

java界面设计

你已经将p1和p2添加到p中,所以只需要向Frame添加一个p就可以了
this.(p1); //去掉
this.(p2); //去掉
this.(p); //将这句改成this.add(p);
修改后的程序我运行了,可以显示了。你试试吧 不懂在追问

谁能给一个java游戏初始界面的编程

String []mapimg={"source/font.png","source/ks.jpg","source/1.jpg","source/2.png",
"source/3.jpg","source/youknow.jpg","fight/js.jpg","fight/js1.jpg"};
//获得工具包
Toolkit tool=Toolkit.()
//开始图片
Image startimg;
//背景图片
Image bjimg,fontimg;
//画开始界面
public void drawstart(Graphics g){
startimg=tool.getImage(mapimg[1]);
g.drawImage(startimg, 0, 0, frame.getWidth(), frame.getHeight(), frame);
fontimg=tool.getImage(mapimg[0]);
g.drawImage(fontimg, 20, 30, frame);
};
这是我以前做的一个很简单的游戏中的几行代码,对你的问题,你要手动选择图片,那做个文件选择器,把图片路径作为方法参数传进去就ok了

用java设计界面,怎么把一个界面分成独立的三块,求高手解答,谢谢

import java.awt.*;
import javax.swing.*;
public class Test extends JFrame{   
    JPanel panel[];
    public static void main(String[] args) {
        Test t=new Test();                 
    }    
    Test(){
        panel=new JPanel[3];
        for(int i=0;i<panel.length;i++){
            panel[i]=new JPanel();
        }
        
        JButton an[]=new JButton[3];
        panel[0].setLayout(new ());
        for(int i=0;i<an.length;i++){
            an[i]=new JButton("按钮"+(i+1));
            panel[0].add(an[i]);
        }
        JLabel label=new JLabel("显示信息");
        panel[1].add(label);
        panel[1].(Color.green);
        panel[2].add(new JLabel("Game"));
        panel[2].(Color.gray);
        
        this.setLayout(new ());
        this.add(panel[0],.SOUTH);
        this.add(panel[1],.NORTH);
        this.add(panel[2],.CENTER);
        
        this.setTitle("游戏");       
        this.setBounds(200,200,300,300);
        this.(false);
        this.(JFrame.EXIT_ON_CLOSE); 
        this.(true);
    }
}

Java 界面设计

import java.awt.;
import javax.swing.JPanel;
import javax.swing.;
import java.awt.;
public class Test1 extends JPanel {
private static final long = 1L;
private = null;
/**
* This is the default
*/
public Test1() {
super();
();
}
/**
* This method this
*
* @return void
*/
private void () {
= new ();
.fill = .BOTH;
.gridy = 0;
.weightx = 1.0;
.weighty = 1.0;
.gridx = 0;
this.setSize(300, 200);
this.setLayout(new ());
this.add((), );
}
/**
* This method
*
* @return javax.swing.
*/
private () {
if ( == null) {
= new ();
}
return ;
}
}
楼主是不是要这种的效果???

Java swing 界面设计 打酱油的别来~~~

*化再还原之后,日志记录区域变大了
问题主要是在这里吧。
方案1.
将一个panBody拆成两个PANEL,
分别存放TABLE和TEXTAREA
下边是例子。
import java.awt.;
import java.awt.;
import java.awt.;
import java.awt.;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.;
import javax.swing.JTable;
import javax.swing.JTextArea;
public class TestApp extends JFrame {
private JTable table;
public TestApp() {
(EXIT_ON_CLOSE);
setSize(503, 355);
(null);
JMenuBar menuBar = new JMenuBar();
(menuBar);
JMenu mnNewMenu = new JMenu("New menu");
menuBar.add(mnNewMenu);
JMenuItem = new JMenuItem("New menu item");
mnNewMenu.add();
JMenuItem _1 = new JMenuItem("New menu item");
mnNewMenu.add(_1);
JMenu mnNewMenu_1 = new JMenu("New menu");
menuBar.add(mnNewMenu_1);
().setLayout(new (2, 1, 0, 0));

JPanel panel = new JPanel();
().add(panel);
panel.setLayout(new (0, 0));

= new ();
panel.add(, .CENTER);

table = new JTable();
.(table);

JPanel panel_1 = new JPanel();
().add(panel_1);
gbl_panel_1 = new ();
gbl_panel_1. = new int[]{0, 0};
gbl_panel_1. = new int[]{0, 0};
gbl_panel_1. = new double[]{1.0, Double.MIN_VALUE};
gbl_panel_1. = new double[]{1.0, Double.MIN_VALUE};
panel_1.setLayout(gbl_panel_1);

_1 = new ();
gbc__1 = new ();
gbc__1.fill = .BOTH;
gbc__1.gridx = 0;
gbc__1.gridy = 0;
panel_1.add(_1, gbc__1);

JTextArea textArea = new JTextArea();
_1.(textArea);
(true);
}
public static void main(String[] args) {
new TestApp();
}
}
如果你要求窗体变化时TEXTAREA的长度变化,而高度不变,这个应该不是布局所能做到的了,
布局就是使窗体中的控件能作到自适应。
如果是这个要求。
用可以实现这样的效果
方案二
import java.awt.;
import java.awt.event.;
import java.awt.event.;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.;
import javax.swing.;
import javax.swing.JTable;
import javax.swing.JTextArea;
public class TestApp extends JFrame {
splitPane = null;
int width = 503;
private JTable table;
public TestApp() {
(EXIT_ON_CLOSE);
setSize(503, 355);
(null);
JMenuBar menuBar = new JMenuBar();
(menuBar);
JMenu mnNewMenu = new JMenu("New menu");
menuBar.add(mnNewMenu);
JMenuItem = new JMenuItem("New menu item");
mnNewMenu.add();
JMenuItem _1 = new JMenuItem("New menu item");
mnNewMenu.add(_1);
JMenu mnNewMenu_1 = new JMenu("New menu");
menuBar.add(mnNewMenu_1);
().setLayout(new (0, 0));
splitPane = new ();
splitPane.(.VERTICAL_SPLIT);
splitPane.(this);
().add(splitPane, .CENTER);
JPanel panel = new JPanel();
splitPane.(panel);
panel.setLayout(new (0, 0));
_1 = new ();
panel.add(_1, .CENTER);
JTextArea textArea = new JTextArea();
_1.(textArea);
JPanel panel_1 = new JPanel();
splitPane.(panel_1);
panel_1.setLayout(new (0, 0));
_2 = new ();
panel_1.add(_2, .CENTER);
table = new JTable();
_2.(table);
(true);
}
public static void main(String[] args) {
new TestApp();
}
@Override
public void ( e) {
// TODO Auto-generated method stub
}
@Override
public void ( e) {
// TODO Auto-generated method stub
}
@Override
public void ( e) {
if (this.getWidth() > width) {
splitPane.(0.8);
} else {
splitPane.(0.6);
}
}
@Override
public void ( e) {
// TODO Auto-generated method stub
}
}

温馨提示:为不影响您的学业,来校区前请先电话咨询,方便我校安排相关的专业老师为您解答
相关资料
姓名不能为空
手机号格式错误