java飞机大战心得体会(共13篇)由网友“避難子”投稿提供,以下是小编为大家准备的java飞机大战心得体会,仅供参考,大家一起来看看吧。
篇1:java飞机大战心得体会
1.首先有玩家类,窗口类,主函数类和图片文件(.jpg)
2.然后是先行知识,创建窗口(JFrame),设置窗口属性;窗口上不能直接添加组件(键盘监听等),所以先在窗口上添加容器(Jpanel),将组件(KeyAdapter)添加到容器;
3.画出玩家:重写窗口类中的paintComponent方法,创建Graphics对象,调用drawImage方法可画图,调用drawString方法可标注其名字
4.移动:在窗口类中创建键盘监听抽象类KeyAdapter(实现了接口的部分方法但无具体操作),需要重写该类的Keypressed方法和KeyRleased方法,赋给按键变量真值,随后将该对象添加到窗口
5.随机生成初始坐标:在开始游戏后随机给定玩家的x、y坐标,创建Random对象,调用Random.nextInt(n)方法,n代表从[0,n)区间的随机值。
6.最后通过一个Timer.schedule(匿名内部类对象,指定延迟后开始,周期)方法来实现移动效果。匿名内部类【TimerTask的子类,重写了run方法,包括repaint方法(实则调用paintComponent)和yidong方法】来重画、监听键盘的指令并作出相应动作
下面是源代码(有注释):
容器类
package a;
import javax.swing._;
import java.awt._;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import static a.Newgame.frame;
//新建面板
public class War extends JPanel {
private Timer timer;
private boolean sUp, sDown, sRight, sLeft;//右飞机按键变量
private boolean sW, sD, sS, sA;//左飞机按键变量
private Player1 player1 = new Player1();
private Player2 player2 = new Player2();
private ImageIcon img11 = player1.img1;
private ImageIcon img22 = player2.img2;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);//此句调用父类方法进行界面重绘,恢复到某个界面,下面的步骤再画玩家;如果注释掉会有重影
//在面板上画出玩家
g.drawImage(img11.getImage(), player1.x, player1.y, 100, 100, this);
g.drawString(“P1”, player1.x, player1.y);
g.drawImage(img22.getImage(), player2.x, player2.y, 100, 100, this);
g.drawString(“P2”, player2.x, player2.y);
}
public void startGame() {
timer = new Timer();
timer.schedule(new TimerTask() {//匿名内部类(TimerTask的子类)
@Override
public void run() {//重写run()函数
repaint();//调用重写的paintComponent来画两飞机
yidong();//并每次判断按下哪个键,然后移动
}
}, 0, 50);//安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。50毫秒执行一次
}
public void yidong() {
//因为每打印一次可能用户按下一个飞机的几个键或者两个飞机的几个键,这些是都要检测到的,改成elseif后只能检测到一个键,无法实现两架飞机同时多方向移动
if (sW && player1.y >0) {
player1.y -= player1.speed;
}
if (sA && player1.x >0) {
player1.x -= player1.speed;
}
if (sS && player1.y < 700) {
player1.y += player1.speed;
}
if (sD && player1.x < 900) {
player1.x += player1.speed;
}
if (sUp && player2.y >0) {
player2.y -= player2.speed;
}
if (sDown && player2.y < 700) {
player2.y += player2.speed;
}
if (sLeft && player2.x >0) {
player2.x -= player2.speed;
}
if (sRight && player2.x < 900) {
player2.x += player2.speed;
}
}
public void act() {
//随机生成两飞机的初始坐标
Random rd = new Random();
player1.x = rd.nextInt(900);
player1.y = rd.nextInt(700);
player2.x = rd.nextInt(900);
player2.y = rd.nextInt(700);
//开始游戏后获得计时器开始监听并重画
startGame();
//KeyAdapter是KeyListener的实现类,重写了所有方法但没有具体操作
KeyAdapter keyAdapter = new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
int key = e.getKeyCode();
switch (key) {
case KeyEvent.VK_W:
sW = true;
break;
case KeyEvent.VK_A:
sA = true;
break;
case KeyEvent.VK_D:
sD = true;
break;
case KeyEvent.VK_S:
sS = true;
break;
case KeyEvent.VK_RIGHT:
sRight = true;
break;
case KeyEvent.VK_LEFT:
sLeft = true;
break;
case KeyEvent.VK_DOWN:
sDown = true;
break;
case KeyEvent.VK_UP:
sUp = true;
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch (key) {
case KeyEvent.VK_W:
sW = false;
break;
case KeyEvent.VK_A:
sA = false;
break;
case KeyEvent.VK_D:
sD = false;
break;
case KeyEvent.VK_S:
sS = false;
break;
case KeyEvent.VK_RIGHT:
sRight = false;
break;
case KeyEvent.VK_LEFT:
sLeft = false;
break;
case KeyEvent.VK_DOWN:
sDown = false;
break;
case KeyEvent.VK_UP:
sUp = false;
break;
}
}
};
frame.addKeyListener(keyAdapter);
}
}
主函数类:
package a;
import javax.swing._;
public class Newgame {
public static JFrame frame;
public static void main(String[] args) {
frame = new JFrame(“逃出生天”);
frame.setSize(1000,800);
//绝对布局组件位置和形状不会随窗体改变,不设置布局管理器就可以使用setBounds()来控制位置
frame.setLayout(null);
//设置窗体关闭程序自动关闭
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//窗体居中显示
frame.setLocationRelativeTo(null);
//添加主面板
War war = new War();
frame.add(war);
//设置面板大小
war.setBounds(0,0,1000,800);
//设置主面板可见
frame.add(war);
frame.setVisible(true);
war.act();
}
}
123456789101112131415161718192223242526
玩家类:
玩家1
package a;
import javax.swing._;
public class Player1 {
public int x;
public int y;
public int speed = 50;
public ImageIcon img1 = newImageIcon(“D:\\Program_Files\\Jetbrains\\workspace_idea\\src\\a\\plane.jpg”);
}
12345678910
玩家2
package a;
import javax.swing._;
public class Player2 {
public int x;
public int y;
public int speed = 50;
public ImageIcon img2 = newImageIcon(“D:\\Program_Files\\Jetbrains\\workspace_idea\\src\\a\\plane2.jpg”);
}
做成一个桌面小游戏:
点“+”号
选好主函数类后点ok
然后点Build中的Build Artificts
选择jar包点Build即可
然后jar包就在你的workspace生成了,找到它发送桌面快捷方式,更改图标名字即可
图片转换成图标的网站附上
篇2:java飞机大战心得体会
用Java制作游戏之前,一定要做到方向明确,思路清晰。首先确定自己需要用到几个类,类里的内容大致是什么,用脑图进行表达展现。
Java语言是一种跨平台、适合于分布式计算环境的面向对象编程语言,具有简单性、面向对象、分布式,多线程性等,其中面向对象有封装,继承,多态三大特性。
1)封装:数据和基于数据的操作封装
2) 继承:一个对象直接使用另一个对象的属性和方法,子类可以继承父类
3) 多态:一个程序中同名的多个不同方法,实现多态的常见方法 子类对父类的覆盖,利用重载在同一个类中定义多个同名的不同方法;
Java游戏制作中必须有 public static void main(String[]args)的主方法,main()方法是程序执行的入口。例如我的飞机大战main(),便是游戏开始执行的入口,写在GameFace类中。
游戏框架的制作,其大部分的代码都是固定形式,可以通用。使用setVisible(true)的方法,改变默认的不可见状态,setLayout(null)取消默认的管理布局,然后setLocation(),setSize(),setBound()等方法设置其大小。将按钮添加监听,实现监听。在对应方法中编写代码,,为监听者创建对象,完成注册,即在接口名字前添加“add”。
游戏版面要继承JPanel,其原因是JPanel带有双缓冲技术,可以解决闪烁的问题,需要加入到JFrame窗体中,JPanel默认的布局管理器是FlowLayout。调用画笔,将所要显示的图片画出来。然后再根据自己的思路,在游戏版面内添加敌机,实现矩形碰撞,生命值判定,游戏结束对话框。要熟练掌握调用其他的类,画出分数,画出生命值。制作容器,装子弹,飞机,炸弹。
制作游戏思路一定要清晰,对于共有属性,可以建立一个父类,例如在创建一个FlyingObject类,这样可以避免代码的反复编写。对于子类myplane、enemies可以直接继承父类,子类可以根据自己的需求再增加新的变量。在子类myplane中,画出我的飞机,控制飞机飞行的边界,调用子弹容器,画出容器中子弹,与敌机进行碰撞检测。飞机大战还应该实现键盘监听,例如Enter键实现暂停,上下左右键实现移动等。在敌机Enemies类中,定义敌机随机出现坐标,敌机图片的相对路径,敌机速度,敌机子弹与我的plane碰撞出现的结果以及敌机子弹生成的时间等。
游戏制作时需要注意的事项:1.JLabel的位置一定要放对,应当先添加背景JLabel,再添加其它控件。否则其它控件将被JLabel所遮挡。
2.对于多次重复编写的代码,尽可能的用for循环,简单方便。但是也要注意跳出语句的使用。
3.调用函数时要注意顺序
4.类名,方法名要遵循命名规范性,尽量做到见名知义,也要注意大小写。
篇3:java飞机大战心得体会
线程:进程(process)就是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。线程:进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。 线程和进程的区别如下:1)一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。2)线程在执行过程中与进程的区别在于每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。3)从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用来实现进程的调度和管理以及资源分配。
2 简述线程的状态及其转换 1)New,创建一个线程,但是线程并没有进行任何的操作。2)Runnable,新线程从New状态,调用start方法转换到Runnable状态。线程调用start方法向线程调度程序(JVM或者是操作系统)注册一个线程,这个时候一切就绪只等CPU的时间。3)Running,从Runnable状态到Running状态,线程调度根据调度策略的不同调度不同的线程,被调度执行的线程进入Running状态,执行run方法。4)Dead状态,从Running状态到Runnable,run方法运行完毕后,线程就会被抛弃,线程就进入Dead状态。5)Block状态,从Running状态到Block状态,如果线程在运行的状态中因为I/O阻塞、调用了线程的sleep方法以及调用对象的wait方法则线程将进入阻塞状态,直到这些阻塞原因被结束,线程进入到Runnable状态。
3 简述线程的两种创建方式以及它们的区别 创建线程的两种方式:1)使用Thread创建线程。Thread类是线程类,其每一个实例表示一个可以并发运行的线程。我们可以通过继承该类并重写run方法来定义一个具体的线程。其中重写run方法的目的是定义该线程要执行的逻辑。启动线程时调用线程的start方法而非直接调用run()方法。start()方法会将当前线程纳入线程调度,使当前线程可以开始并发运行。当线程获取时间片段后会自动开始执行run方法中的逻辑。2)使用Runnable创建线程。实现Runnable接口并重写run方法来定义线程体,然后在创建线程的时候将Runnable的实例传入并启动线程。两种创建线程方式的区别: 使用Thread创建线程,编写简单,可以直接操纵线程,无需使用Thread.currentThread(),但是不能够再继承其他类。使用Runnable创建线程可以将线程与线程要执行的任务分离开减少耦合,同时Java是单继承的,定义一个类实现Runnable接口,这样该类还可以继承自其他类。
多线程实现方法
使用Thread创建线并启动线程
java.lang.Thread类是线程类,其每一个实例表示一个可以并发运行的线程。我们可以通过继承该类并重写run方法来定义一个具体的线程。其中重写run方法的目的是定义该线程要执行的逻辑。启动线程时调用线程的start()方法而非直接调用run()方法。start()方法会将当前线程纳入线程调度,使当前线程可以开始并发运行。当线程获取时间片段后会自动开始执行run方法中的逻辑。
public class TestThread extends Thread{
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println(“我是线程”);
}
}
}
创建预启动线程
…
Thread thread = new TestThread();//实例化线程
thread.start();//启动线程
…
使用Runnable创建并启动线程
实现Runnable接口并重写run方法来定义线程体,然后在创建线程的时候将Runnable的实例传入并启动线程。这样做的好处在于可以将线程与线程要执行的任务分离开减少耦合,同时java是单继承的,定义一个类实现Runnable接口这样的做法可以更好的去实现其他父类或接口。因为接口是多继承关系。
public class TestRunnable implements Runnable{
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println(“我是线程”);
}
}
}
启动线程的方法:
…
Runnable runnable = new TestRunnable();
Thread thread = new Thread(runnable);//实例化线程并传入线程体
thread.start();//启动线程
…
使用内部类创建线程
通常我们可以通过匿名内部类的方式创建线程,使用该方式可以简化编写代码的复杂度,当一个线程仅需要一个实例时我们通常使用这种方式来 创建。 例如:继承Thread方式:
Thread thread = new Thread(){ //匿名类方式创建线程
public void run(){
//线程体
}
};
thread.start();//启动线程
Runnable方式:
Runnable runnable = new Runnable(){ //匿名类方式创建线程
public void run(){
}
};
Thread thread = new Thread(runnable);
thread.start();//启动线程
线程的方法
currentThread:方法可以用于获取运行当前代码片段的线程
Thread current = Thread.currentThread();
获取线程信息 Thread提供了 获取线程信息的相关方法: long getId():返回该线程的标识符 StringgetName():返回该线程的名称 int getPriority():返回线程的优先级 Thread.state getState():获取线程的状态boolean isAlive():测试线程是否处于活动状态 boolean isDaemon():测试线程是否为守护线程 booleanisInterrupted():测试线程是否已经中断
线程优先级
线程的切换是由线程调度控制的,我们无法通过代码来干涉,但是我们可以通过提高线程的优先级来最大程度的改善线程获取时间片的几率。线程的优先级被划分为10级,值分别为1-10,其中1最低,10最高。线程提供了3个常量来表示最低,最高,以及默认优先级:Thread.MIN_PRIORITY, Thread.MAX_PRIORITY, Thread.NORM_PRIORITY 设置优先级的方法为:
void setPriority(int priority)
守护线程
守护线程与普通线程在表现上没有什么区别,我们只需要通过Thread提供的方法来设定即可: __void setDaemon(boolean )__当参数为true时该线程为守护线程。 守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。 GC就是运行在一个守护线程上的。需要注意的是,设置线程为后台线程要在该线程启动前设置。
Thread daemonThread = new Thread();
daemonThread.setDaemon(true);
daemonThread.start();
sleep方法
Thread的静态方法sleep用于使当前线程进入阻塞状态: __static void sleep(long ms)__该方法会使当前线程进入阻塞状态指定毫秒,当指定毫秒阻塞后,当前线程会重新进入Runnable状态,等待分配时间片。该方法声明抛出一个InterruptException。所以在使用该方法时需要捕获这个异常 改程序可能会出现“跳秒”现象,因为阻塞一秒后线程并非是立刻回到running状态,而是出于runnable状态,等待获取时间片。那么这段等待时间就是“误差”。所以以上程序并非严格意义上的每隔一秒钟执行一次输出。
yield方法:
Thread的静态方法yield: __static void yield()__该方法用于使当前线程主动让出当次CPU时间片回到Runnable状态,等待分配时间片。
join方法
__void join()__ 该方法用于等待当前线程结束。此方法是一个阻塞方法。 该方法声明抛出InterruptException。
线程同步
synchronized关键字 多个线程并发读写同一个临界资源时候会发生“线程并发安全问题“ 常见的临界资源: 多线程共享实例变量多线程共享静态公共变量 若想解决线程安全问题,需要将异步的操作变为同步操作。 所谓异步操作是指多线程并发的操作,相当于各干各的。所谓同步操作是指有先后顺序的操作,相当于你干完我再干。
同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块这个比较难理解故写了下面代码帮助理解
/__
_ 多线程并发安全问题
_ 当多个线程同时操作同一资源时,由于
_ 线程切换时机不确定,导致出现逻辑混乱。
_ 严重时可能导致系统崩溃。
_ @author ylg
_
_/
public class SyncDemo1 {
public static void main(String[] args) {
/_
_ 当一个方法中的局部内部类想引用该方法
_ 的其他局部变量时,这个变量必须被声明
_ 为final的
_/
final Table table = new Table();
Thread t1 = new Thread(){
public void run(){
while(true){
int bean = table.getBean();
Thread.yield();//模拟线程切换
System.out.println(
getName()+”:“+bean
);
}
}
};
Thread t2 = new Thread(){
public void run(){
while(true){
int bean = table.getBean();
Thread.yield();//模拟线程切换
System.out.println(
getName()+”:“+bean
);
}
}
};
t1.start();
t2.start();
}
}
class Table{
//20个豆子
private int beans = 20;
/__
_ 当一个方法被synchronized修饰后,该方法
_ 成为”同步方法“。多个线程不能同时进入到
_ 方法内部。
_ @return
_/
public synchronized int getBean(){
if(beans==0){
throw new RuntimeException(”没有豆子了!“);
}
Thread.yield();//模拟线程切换
return beans--;
}
}
/__
_ 有效的缩小同步范围可以保证在
_ 安全的前提下提高了并发的效率
_ @author ylg
_
_/
public class SyncDemo2 {
public static void main(String[] args) {
final Shop shop = new Shop();
Thread t1 = new Thread(){
public void run(){
shop.buy();
}
};
Thread t2 = new Thread(){
public void run(){
shop.buy();
}
};
t1.start();
t2.start();
}
}
class Shop{
/_
_ 在方法上使用synchroinzed,同步监视器对象即当前方法所属对象:this
_/
// public synchronized void buy(){
public void buy(){
try{
Thread t = Thread.currentThread();
System.out.println(t+”正在挑选衣服..“);
Thread.sleep(5000);
/_
_ 同步块可以缩小同步范围。
_ 但是必须保证”同步监视器“即:”上锁对象“是同一个才可以。
_ 通常,在一个方法中使用this所谓同步监视器对象即可。
_/
synchronized (this) {
System.out.println(t+”正在试衣服..“);
Thread.sleep(5000);
}
System.out.println(t+”结账离开“);
}catch(Exception e){
}
}
}
/__
_ synchronized也成为”互斥锁“
_ 当synchronzed修饰的是两段代码,但是”锁对象“相同时,这两段代码就是互斥的。
_ @author ylg
_
_/
public class SyncDemo4 {
public static void main(String[] args) {
final Boo b = new Boo();
Thread t1 = new Thread(){
public void run(){
b.methodA();
}
};
Thread t2 = new Thread(){
public void run(){
b.methodB();
}
};
t1.start();
t2.start();
}
}
class Boo{
public synchronized void methodA(){
Thread t = Thread.currentThread();
System.out.println(t+”正在调用方法A“);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
System.out.println(t+”调用方法A完毕“);
}
public synchronized void methodB(){
Thread t = Thread.currentThread();
System.out.println(t+”正在调用方法B“);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
System.out.println(t+”调用方法B完毕“);
篇4:java飞机大战心得体会
开发登录界面、设计地图加载、子弹飞机的加载、主控制程序的开发登录界面的开发,通常是在界面上显示游戏菜单选项,用户可根据菜单项选择需要的操作。菜单项是和游戏的功能紧密相关的。手机游戏的开发往往在界面和操作方式上有较高的要求,JavaME提供了低级界面开发的API,可用于游戏开发。低级界面画布类主要有Canvas和GameCanvas,其中Canvas是属于MIDP1.0,GameCanvas则是属于MIDP2.0。低级用户界面技术为用户提供了灵活的开发方法,可以进行一些较为底层的操作,例如:按键的处理事件更为丰富,组件位置的设置更为灵活。手机上的屏幕坐标系和我们常规数学的坐标系不相同。对于坐标(x,y),若x值越大,则越向右,y值越大,则越向下。对于飞机射击游戏,飞机在飞行过程中经过不同的地理环境,例如大海、小岛、石礁等作为地图的背景。地图的宽度通常要求能够自动匹配不同类型的手机宽度,高度则是以一个关卡所需的时间为依据进行设计。在此我们采用简化操作方法,给地图宽度和高度设置一个具体值。子弹的射击应该支持不同的方向,例如我方飞机自下而上发射子弹,敌方飞机自上而下发射子弹。当子弹与飞机碰撞之后,飞机的血量相应地要减少,如果飞机的血量为0,则产生爆炸效果,子弹和飞机都消失。飞机主角在开始游戏时出现在屏幕最底部的中间处,玩家可以通过上、下、左、右键控制其飞行方向,按下确认键后可以发射子弹。敌机在游戏开始后从背景上部出现,飞行,并发射子弹。在本任务中需要考虑敌机出现的位置,出现的数量和频率,飞行的速度和子弹的发射方向。
为了更好地控制游戏的主体逻辑,可以统一对游戏地图进行设置,对主角飞机、敌方飞机初始化,并在多线程中实现游戏的逻辑控制。
游戏主框架的首要模块的安排:
1.游戏的初始化。主要是完成游戏资源的加载,各种游戏对象、变量取值的初始化,游戏运行环境的获取和设置,历史记录的读取等。
2.游戏的主循环。执行游戏处理的主要代码,直到满足退出要求才停止循环,例如:玩家选择退出游戏,玩家游戏失败,玩家最终完成游戏等。主要实现分为三步:(1)获得游戏的输入信息;(2)处理游戏的逻辑;(3)更新游戏的画面
3.退出游戏
Canvas为抽象类,负责图形图像的绘制和用户交互。进行低级玩家界面的开发通常需要继承Canvas类,主要方法如下:
1.getHeight():获取Canvas绘图区域的高度。
2.getWidth():获取Canvas绘图区域的宽度。
3.paint(Graphics g):渲染画布,向屏幕画图,通常将画图的操作放在该方法中实现。当屏幕需要重新绘制时,JavaME主线程会自动调用paint方法,程序员不能在代码中直接声明调用该方法。
4.repaint():主动向系统请求刷新界面,具体的刷新操作实际是通过调用paint方法来完成。
5.isDoubleBuffered():判断手机设备是否匹配双缓冲。有些手机匹配双缓冲技术,有些则不匹配。
6.getGameAction(int keyCode):将手机的键值切换为游戏动作。
7.getKeyName(keyCode):得到按键的名字。
Graphics提供2D渲染能力,作用是在屏幕上绘制图形,类似于一支画笔。
Graphics绘制的图形不能够直接显示,必须通过Canvas或GameCanvas才能显示在屏幕上,因此Canvas和GameCanvas类似于可以显示图形的画布
Graphics类支持绘制图形主要包括以下3种:
(1)文本:可以设置文本的颜色、字体大小等
(2)图像:可以直接绘制图像文件或者从缓存中绘制
(3)2D几何图形:绘制点、直线、平面图形等
Graphics类没有构造方式,获取对象的途径有3种:
1.Canvas类中的paint方法有一个Graphics对象参数,系统会自动调用paint方法,并传进一个Graphics对象,因此可以在paint方法中使用Graphics对象编写绘图代码。
2.在GameCanvas类中通过getGraphics方法来获取一个Graphics对象,因此可以在要求的地方灵活地编写与绘图有关的代码。
3.Image对象的getGraphics()方法得到Graphics对象,可用于编写双缓冲区代码。
1.直接用整幅图片作为背景,再在上面重叠一层加入物件、摆设等,优点在于图形相对丰富、漂亮,但消耗资源较多,受手机硬件条件的影响不能做太大的图。
2.游戏地图是用一个个图块重复拼接成,而在程序中就可以通过一个较小的图像文件和一个二维数组,绘制出一幅较大的地图。具体的做法是将图像文件划分为若干个相同大小的图块(一般每个图块是16像素× 16像素或者32像素 ×32像素),每个图块给一个索引值,例如:1表示草地图块,2表示砖头图块。而二维数据中记录的数字就是图像文件中的图块索引值,例如:某个数组元素的数值若为1,则表示在此处画草地。此方法的益处在于比较节约系统资源,可做出来的地图相对比较一般。
地图编辑器能够帮助将地图最后转变成程序直接使用,所以一个好的地图编辑器能够加速游戏的开发周期。
业界已经推出多款地图编辑器,例如Mappy(MapWin)、Tiled、TILESTUDIO等,其中Mappy功能比较强大,可以很方便地对2D地图进行编辑。
下载mayppy软件:HTTP:/ / www.tilemap.uk /mappy
假如需支持png图片,那么还需下载两个dll文件,这两个文件也都放在Mappy软件的网址上
zlib.dll用于文件压缩
libpng12.dll是PNG图像压缩库
将这两个文件下载复制到Mappy可执行文件的同一个目录下即可,否则在导入PNG文件时,会报图5-23的错误
制作游戏还需要用到图像素材,因此除了Mappy软件之外,还需要用到图像处理软件Photoshop来制作原始游戏素材。
J2SE中提供了多个接口和类管理集合,例如有Collection、List、Set、Map接口,实现接口的集合类有LinkedList、ArrayList、Vector、Hashtable、HashMap和WeakHashMap类。
在JavaME中只有java.util包提供Vector类,其功能和J2SE的Vector类似,实现的是一个动态增长的数组,可以在程序代码中调整或者裁减集合的大小,能向集合插入、删除和修改元素。
每一个集合中的元素都被分派一个整数索引号,能够直接根据索引号插入和删除一个元素,也能够修改和得到一个元素的值。
为了更好地控制游戏的主体逻辑,可以统一对游戏地图进行设置,对主角飞机、敌方飞机初始化,并在多线程中实现游戏的逻辑控制。
篇5: 飞机大战作文300字
今天,很多男同学带来了纸飞机。于是,我们在课间进行了一场激烈的“纸飞机大战”。
我折好了一架“歼击机”和一架“运输机”,在操场上掷飞。“歼击机”是橘黄色的,可以挂两个“炮弹”,“运输机”是白色的,机头很尖。
我一挥手臂,先把“运输机”掷了出去。“运输机”飞得很远,在空中缓缓落下,差不多有8米远。我捡回飞机,放进了口袋里,又把“歼击机”掷飞。突然,“啪”的一声,我的飞机和余越的`“G―25鱼鹰战斗机”相撞了。我的飞机垂直下降,掉到了地上。我捡起飞机一看,机头已经被磨圆了。
我叫上陈徐琰,一起到紫园里玩纸飞机。我把“运输机”掷了出去,“运输机”飞到了一串紫藤花上,慢慢掉下来。边上有只很大的蜜蜂,“嗡嗡”叫着朝我们飞来。我们吓了一跳,急忙跑到大礼堂才躲过蜜蜂的袭击。
我还和邵杨合作折了“波音747”客机,朝着余越掷过去。余越被打中了,他生气地把“MH370失联飞机”朝我们扔来。我们灵巧地闪开,余越的飞机从我们身边飞过。这时,欢呼声、惊叫声充满了操场,五花八门的纸飞机满天飞。
“叮铃铃――“上课了,我们陆续回到教室,大家还兴高采烈地讨论着纸飞机。
这真是一次快乐的“纸飞机大战”!
篇6:飞机大战作文400字
飞机大战作文400字
飞机大战,一听名字就会让人联想到在无边无际的宇宙中飞着的各种各样的战斗飞机。其实,你想错了,我所说的飞机大战仅仅只是有一些纸飞机而已。让我们穿梭时空之门,飞到飞机大战的现场看看吧!
那天是期末考试,紧张的气氛飘荡在我们身边。考完语文和数学,吃饭后就静校了。现在是午休,该干什么好呢?按理来说现在要复习,可我们才不想复习呢!就在这时,一个男生拿起了一只纸飞机,“嗖”地一下飞了出去,纸飞机飞呀,擦过了许多人的.头顶,最后落在一个女生头上。教室里顿时安静了下来,但在零点零零一秒后,同学们纷纷笑了,于是飞机大战就这么开始了。童心们有的在折飞机,有的已经让飞机在上空飞翔。教室里沸腾了,空中的纸飞机不断地飞来飞去,大家的脸上都洋溢着笑容,五(6)班教室里欢笑声持续不断。就在这时,一个坐在床边的同学探出了头,叫到:“老师来了!大家别玩了!”就在这一刻,老师推开门,我们以最快的速度将飞机收了起来,拿着课本有模有样地复习。可当老师离开教室后,大家又玩翻了,挥舞着纸飞机。纸飞机飞来飞去,他们可没长眼睛,所以,经常会有飞机击中别人的脑袋。“叮铃铃”下课了,飞机大战就到此结束吧!让我们穿梭回去吧!
说的飞机大战,其实他没有世界大战那壮烈的场面,也没有高科技的飞机,只是一些普通的纸飞机罢了,但这是一场快乐的飞机大战。
篇7:java心得体会
现在我就谈谈自己在Java学习方面的心得和教训。古人云:活到老,学到老。读书学习实乃艰苦之事,花费时间,消耗精力。然苦之外亦见其乐:得到了知识,提高了认识,完善了自己。学习,求其真,务其实,应“敏而好学,不耻下问”,才能不断促使进步。学习,不仅求知,也要懂法,学会方法比掌握知识更加重要。笛卡尔说过,“没有正确的方法,即使有眼睛的博学者也会像瞎子一样盲目摸索”,可见学习方法的重要性。
其实,大学之前几乎没有软件技术之类的概念,大三之前仍然对于程序懵懂不开。但是这并不能妨碍我热爱这个行业,也不能就断定我在这个行业里一事无成。刚学?Java,我的确感觉不开窍,特别对OO(面向对象)编程仍然不能理解。但是人如果一思考,其实什么问题都解决了。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。对于抽象的东西要能具体化,对于具体的东西要能抽象化。
我学习java基础一直使用的是《编程思想》第四版这本书,感觉挺不错的,全面透彻通俗易懂,在国外也是广受好评,我很惋惜没有早点知道这本书,否则也不回浪费大学三年青春岁月,一无是处的打发光阴,值得庆幸的事这本书一定程度上激发了我对java学习的兴趣与潜力。英语能力强的话,可以直接看英文原版。我一直强调重视基础,如果你的java基础打的牢,你在学习那些java框架就是非常轻松的事了。
二.Java学习的确要学习的东西很多,就像这为朋友上面提到的那些。Java不像.net一家独大,记得在大学里教我们.net老师早就提醒过我们学java才是出路,学好java才是王道,我当时就纳闷,这不是搬石头砸自己的脚,往自己身上泼冷水吗?现在恍然大悟,他当时只是为我们指引一条明路,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管java东西再多,总有规律可循。根据自己的发展方向的不同,可以选择不同的学习路线。对于怎样成为一名出色的Java?Web程序员,我的建议是:1、JSP的知识不能欠缺,理解什么是servlet,什么是java?bean,熟悉jsp常使用的标签。我自己感觉,对于JSP的学习不需要太认真,毕竟现在真正使用纯JSP的情况已经不多了,能掌握基本的知识就绰绰有余。2、学习一个或一个以上的web表现框架。如果从使用的程度上来讲,Struts依然是最流行的框架,社会需求也很大,所以学习Struts是一个不错的选择,最近一个月我们刚刚模拟总算也用到了框架,因为框架本身也是一种封装,程序开发是将简单事情复杂化,模拟Struts使我们学习三大框架和其他框架奠定良好的基础,使用框架的前提是你对他处理的业务逻辑也相当熟练了。4、至于xml,css这样的页面表现的东西,如果你不从事美工方面,我认为没有必要花过多的时间去学习,在平时的项目开发中慢慢的就会使用了。
还是那句话,基础很重要,永远不要忽视这一点。刚刚毕业,公司不会要求员工什么都会,只要技术扎实,学习的能力强,学习的速度就很快,企业有时候非常看重?这一点。其次掌握struts、hibernate这两个框架,达到可以熟练使用的目的,这会增加你就业的砝码。至于spring,EJB可以在以后的工作中学习使用,现在了解一下就可以了。当然作为一个java?web程序员,还要了解数据库、tomcat,jboss服务器、常用的开发工具Eclipse,NetsBean等。
三、1.学java切忌浮躁,欲速则不达,初学者请不要被新技术迷惑,先把基础学扎实,一步一个脚印的逐步学习,不要想着一步登天。我们要如水底磐石切不可做那水上浮萍,浮躁的人永远学不到什么东西。软件开发之路是充满荆棘与挑战之路,也是充满希望,有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫”天神啊,请赐给我一本葵花宝典吧“,殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了”东方不败“,倒是成”西方失败“的几率高一点。”不走弯路,就是捷径",佛经说的不无道理。 2.要有自我约束力? 春来不是读书天,夏日炎炎正好眠,秋来蚊虫冬又冷,背起书包待明年。总有一些理由不学习。这样下去,我们的java之树永远长不大。古人云:“人静而后安,安而能后定,定而能后慧,慧而能后悟,悟而能后得。”很有道理。在四川大足佛教石刻艺术中,有一组大型佛雕《牧牛图》,描绘了一个牧童和牛由斗争、对抗到逐渐融合、协调,最后合而为一的故事。佛祖说:“人的心魔难伏,就像牛一样,私心杂念太多太多;修行者就要像牧童,修炼他们,驯服他们,以完美自己的人生。”我们学java也一样,要能够驯服那些影响我们学习的大牛、小牛,抵制各种诱惑,集中精力,专心学习。3.操作实践前多看视频,我个人的经验和理解,边看视频边实践是学习编程语言最好的捷径。首先在电脑上安装编程软件,然后根据视频里例子进行验证理解,最后要懂得总结并动手多做些项目,从而熟练掌握java语言。
篇8:java心得体会
学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并且有自己的老师讲解,还有了上机的机会,比自己自学省事多了,于是鼓足信心,开始了漫长的java征途。
还记得我编写的第一个经典程序“hello Word”。从那时起我已开始走进Java的世界。当时自己不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。 结果把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。
因为基础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识!
学习一门新的语言,参考书是离不开的。听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。
在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。
在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C语言的经验,花了很长时间,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了很多遍,才彻底领悟了。
开始熟悉Java的类库。基础类库里面的类非常非常多。据说有3000多个。但是我真正使用的只有几个,比如说 java.io.*; java.util.*; java.sql.*;等。
此外,我对于static,public,private,Exception,try{ },catch { },finally{ }等等一开始都不是很懂,都是把书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。
在学习Java的过程中我得出这样的结论:
1.学习中,要养成良好的习惯(写括号时要成对,字母大小写要区分,单词拼写要准确)。
2.在学习的过程中,最好不是仅仅停留在java表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、试着写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己。
4. 在 Java 的学习过程中,可能会遇到形形色色的问题不容易解决,应多去专业论坛了解相关的知识,书本上的知识有限。要会从网上搜索有用的信息 加以整理,促进学习的深入和知识水平的提高。
看了好多网上课程,说学到一定程度要尝试着自己做东西,但觉得自己仅仅经过一学期的学习,还远远不够,希望自己在以后学习中继续努力,能够真真正正拥有一门编程语言,对自己今后的发展起
到作用。在学习java语言的同时,也让我学会了如何来发现问题,如何解决问题,怎样有效的学习等等,相信会对我一生都有帮助。
心得
记得当时拿着Oracle授权学习中心颁发的毕业证书时喜悦的心情,到现在对着电脑写心得体会的时间,才发现,半年的的时间,一眨眼就过去。回顾这半年的生活,心里总充满着感激,感激Oracle授权学习中心给了我一个学习深造的平台,感激java教学老师对我的培养。
国内Java热自从20XX年就有增无减,无论是游戏,还是大中小网站,还是B2C商城,还是各大信息系统,到处都是是java的身影;各大招聘网站的java工程师的招聘信息也是目不暇接,于是我便决定要改行学IT这块。
我记得我编写首个小程序“helloword”,在这一刻我已经进入了java的世界。当时自己不是很理解为什么main方法一定要这样来定义publicstaticvoidmain(String[]args),能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。结果把HelloWorld程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。因为基础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识!学习一门新的语言,参考书是离不开的。听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西、包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C语言的经验,花了很长时间,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了很多遍,才彻底领悟了。开始熟悉Java的类库。基础类库里面的类非常非常多。据说有3000多个。但是我真正使用的只有几个,比如说java.io.*;java.util.*;java.sql.*;等。此外,我对于static,public,private,Exception,try{},catch{},finally{}等等一开始都不是很懂,都是把书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。
在学习Java的过程中我得出这样的结论:
1.学习中,要养成良好的习惯(写括号时要成对,字母大小写要区分,单词拼写要准确)。
2.在学习的过程中,最好不是仅仅停留在java表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、试着写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己。
4.在Java的学习过程中,可能会遇到形形色色的问题不容易解决,应多去专业论坛了解相关的知识,书本上的知识有限。要会从网上搜索有用的信息加以整理,促进学习的深入和知识水平的提高。
现在的我在家软件公司上班,IT业之所以那么有魅力,其中的一个原因就是相对高的年薪诱惑。不论是年轻人还是中年人,与其他职业相比,能力稍差也能赚到不错的年薪。以上呢就是我学习java的java学习心得和体会,希望能和大家共勉!
篇9:java培训班心得体会
通过实习,我自身发生了重大的转变。首先,进入公司,你就是一名职业人,不再是一名学生,你要具备一名职业人应具备的素养,不迟到不早退是必然的,而且还要时刻严格要求自己,公司的规定要严格遵守。然后,在技术上也有了很大的提高,学习了很多公司自己的框架和工具,这都是一些前辈的宝贵经验。而且所作的软件应用性更强。所以,我要坚定自己的信念,在公司好好实习,争取提早转正,我相信我会在JAVA开发这条路上走的更长更远。 总之,这段时间,我看到了自己本身存在着许多问题,也会遇到这样那样的问题,当前的时代日趋复杂,不学到一定的深度和广度是难以在实际工作中应付自如的。因此反映出学习的还不够,缺点疏漏。需再加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能,为以后的工作存储更多的能力。毕业实习使我获得了人生第一笔宝贵的工作经验,虽然在步入社会后,还有很多东西要学习,很多教训要吸收,但我想我已经做好了足够的准备,无论是心态上还是技能上。现代社会的竞争是残酷的,但只要努力地付出,我的职业生涯就必定会开出希望的花,结出成功的果——我相信。
四、今后自己努力方向
学无止境:我将坚持不懈地努力学习软件技术知识,并用于指导实践。对现软件行业来说,技术变化较快,在这方面我要加强自我学习。光说不做,不行。在以后的工作中不断学习知识,通过多看、多学、多练来不断的提高自己的技能。这样才能不断的丰富自己,让自己不提前被这个竞争激烈的社会所淘汰不断锻炼自己的胆识和毅力,提高自己解决实际问题的能力及沟通能力,并在工作过程中慢慢克服急躁情绪,积极、热情、细致地的对待每一项工作。总结这段时间的实习生活,使我受益匪浅,受益一生,这将为我选择软件事业而自豪,选择软件事业而骄傲,更加坚定了我成为软件人的决心和信心,我有能力和毅力来走这条路。
篇10:java培训心得体会
短短的一个月很快就过去了,在这短短的一个月里,我学到了很多,了解了很多。在这一个月里我学到了有关JAVA等方面的知识,了解了关于软件开发的流程。了解了自己的不足,知道了自己努力的方向。
回顾这次的实训,这次或许是最后的实训机会。我是一名大二的学生,明年或许就要出去实习了,所以我很珍惜这次的实训机会,因为它能够让我了解自己的不足以及以后自己努力的方向,同时也能让我了解软件开发的流程,增加一点软件开发经验和社会经验。让我在以后的实习中会更好的融入到其中,增加自己的就业机会,因为纵观现在的就业形势很不让人乐观,由于之前的经济危机,就业机会越来越少,就业也越来越难,这就给了我们很大的压力,所以要是没有真本事,就业岗位就无从谈起,因此,在以后的学习中,我会更加好好努力。
通过这次的实训,我学到了很多:
首先,对JAVA识比以前有了更深的了解。在这之前由于种种原因我JAVA学的很不好,编程我几乎写不出来。但经过这次的实训,我对JAVA的理解,虽然还有很多都不懂,但我会在今后的实训和学习中加以学习了解,力求弄懂,增强自己对JAVA的理解。
其次,在这次的实训中我的动手操作能力有了一点的提高,刚开始的时候JDK的配置,数据库的安装都出现了一定的问题,JAVA可实话开发工具的不熟悉,所以开始的时候进程很慢,时间都用在了JDK的配置,数据库的安装以及熟悉JAVA可视化开发工具上,但付出有了回报,成功的配置了JDK,安装了数据库,熟悉了JAVA可视化开发工具,总的说来,自己还是有一定的收获的。因为自己的动手操纵能力得到了提高。
最后是团队协作。在整个项目完成过程中团队协作有着不可替代的作用。从在刚拿到项目时对项目的分析到最后的项目完结的都有一定的体现。刚拿到项目时,我们团队进行了分析,并分配了各自的任务。当我们其中一人遇到问题的时候,我们其他人都会去帮忙,效率提升了很多。但可能由于不是一个宿舍的,大家彼此间都不是很了解,所以交流中还是存在了一定的问题。
篇11:java学习心得体会
从大三开始算,我学习java已经有一年的时间了,不过虽然时间长,但是对于现在的我还是一个初学者,懂不了多少的java初学者。期间曾迷茫过,曾困惑过,走了不少的弯路,老师布置的试验作业每次都是不会做,每次都是要问同学,这个代码什么意思啊?为什么用这条代码,用别的不行吗?甚至后来根本没耐心问,索性就复制同学的作业交上去。但是都是各种0分,害的同学也这样,不过他能找老师反驳,而我却没实力。。。渐渐的,我认识到这样下去是不行的,我必须改正自己的学习态度和方式。接下提到的就是我这一年来的java学习心得。 刚一开始学习java时,我就已经学习过C语言,不过C语言学的不是很好,所以开始看到java的时候我很反感,看着源代码,都不知道失什么意思。看书的时候一看到源代码就头疼,因为根本看不懂。那段时间根本就是一无所获,在图书馆借了一本书,关java的语法特性,与别的语言相比的优点,什么跨平台,源代码公开,什么write 、once 、run 、anywhere,能说得头头是道,可是一到具体的问题,想写一些具体的东西,问题就都来了,根本不知道该怎么下手。所以每次李旺老师布置的试验作业都没的按时完成。渐渐的时间过去了,一点进展都没有,我都几乎要放弃了。
而后又同学经常来宿舍跟我讲解,我很感谢他。慢慢的我也理解了一些知识。从他那里,我认识到,JAVA是一门计算机语言,是人类发明的语言,应该比人类语言更容易学习,只要你有一种必胜学习JAVA心态就可以成功。学习JAVA的方法:JAVA学习中,首先要做到课前、课后复习及预习,要时时保持一个清醒的头脑;多和同学沟通;互相学习;取长补短;在学习中做到帮助他人或他人帮助自己。学习java,的确要学习的东西很多,就像同学提到的。Java不像、net一家独大,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管java东西再多,总有规律可循。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。java的所有编程思路都是“面向对象”的编程。所以大家在往更高境界发展以前一定要打好基础,基础是王道。我们的基础要扎实扎实再扎实。所谓打好基 础并不是说要熟悉所有的java代码。要了解java的结构。class,methode,object,各种套用import,e_tend 让自己在结构上对java有个立体而且整体的了 解。
学Java千万不要浮躁。说到浮躁,这也是一个很值得我深思的问题。我觉得我自己也有这样的倾向,不仅是我,估计大多数的人都有这个毛病。总是喜欢讨论什么语言最好,什么语言功能强大。这种讨论倒没有错,不过真正学习的时候,浮躁会使你失去很多。在学习过程中,我很努力地使自己保持心理的平静,从基础学起,甚至是一些看上去完全没有必要的基础。
同学要扎扎实实,一步一个脚印的逐步学习,不要想着一步登天。不然我问他的时候,他跟我讲的我也都不懂,这样对我也没用。
要多查API,它是Java编程的基本方法,也是编程过程中所不断利用的资源。Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。对于所接触到的类,方法,都去仔细去阅读文档的说明,再用自己编写的实例去此时一下。而且不要只看而不练,学好java靠的还是实践,在一周两节的实验课要认真编程,不懂问同学或问李老师。只有理论和实践相结合才能真正掌握只是和技能。而且还要懂得运用百度和谷歌,遇到问题可以先搜索一下,实在不懂再找同学。理论学习。通过对理论的学习,尽量了解新知识的概念;学习之后只是粗略的了解概念,不能和实际很好的结合。根据理论学习的知识,考虑在什么场合下可以应用这个新知识,哪些地方已经应用了这个概念,建立对新知识的感性认识。 java是一种面向对象的操作语言,必须要明白这点,才能从总体上把握java。学习编程,首先要从分析别人的代码开始,明白他们的思路,认真分析,在学习的过程中一定要动手做、写代码,九比如说老师布置的试验作业,一定要自己做,不能抄同学的,首先不是为了应付老师,而是要让自己真正懂得java,这样慢慢的,以后的试验自己就又实力去做。学习java不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,实践失最重要的。而且还可以从实验中,体会到编程的乐趣,感受到自己做好一个程序,然后运行出结果,失很有成就感的!
而对于J2EE,首先要先学JSP。要明白JSP的工作原理,在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet,而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息JSP的调试比较麻烦,特别是当bean是在一个session中存在时,更加困难。得从好几个页面开始往里面走才行。通常是用out、println或System、out、print()来打一大堆的信息来查问题。如果是用jbuilder做开发,它能直接调试JSP、不过更重要的是知道错误产生的原因及解决方法。JSP是用JAVA写的,所以它是大小写敏感的,用过其他编程语言的人最容易犯这个错误。另外在浏览器的地址栏中输入的访问JSP的地址也是区分大小写的、在jsp中判断字符串要使用compareTo方法,不要用==,因为在java中String变量不是一个简单的变量而是一个类实。所以JSP的知识不能欠缺,理解什么是servlet,什么是java bean,熟悉jsp常使用的标签 对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。对于抽象的东西要能具体化,对于具体的东西要能抽象化。现在我学习java基础一直使用的是《Java核心技术》这本书,这本书失同学推荐我看的,感觉挺不错的,很基础很全面。这本书强调重视基础,如果java基础打的牢,在学习那些java框架就是非常轻松的事了。
在这一年的学习过程中,通过同学的帮助和李旺老师的教导,我对java有了初步的认识和了解。学习java首先主要是学习了Java的程序结构,包括了循环、数组、类和方法以及字符串处理等内容。在学习期间,上课认真听老师的讲解,特别是课后练习和上机的题目,以及老师提供给我们的有关学习编程语言的方法和技巧,对于我巩固所学的理论知识有很大的帮助。现在我也只是刚刚开始学习Java语言,所以想真正掌握Java技术,以后还会有很长的一段过程需要我们更加努力地去学习。毕竟,知识需要靠积累才能真正掌握。
篇12:java培训班心得体会
一、学习JAVA说难也不难,说易也不易,代码不是重点,思维才是首要的;
二、学习JAVA要多看看别人的代码,多多练习,有时候你觉得很难的问题,其实是你的思维短路了,看了一下别人的代码,我擦原来这么简单。。
三、JAVA里面面向对象这章很重要,为后面的课程打基础的,多线程,IO流是难点;
随着项目的一步步深入,clientlogin和chatserver的建立已经告一段落,在这几节课的学习过程中,越来越多的新概念不停出现,感觉自己学习起来已经有了吃力感。唐大仕老师的慕课也开始了第一章的学习,相信结合理论与实践的学习方式可以让我的Java学习越来越好..
时间一点一点的过去,在我们还没觉得什么的时候,岁月的车轮无情的从我们的身上碾了过去,留给我们的只是无尽的回忆。回想我读大学的时候,是多么的'消遣自在,只要完成作业,准备好考试就行了。然而真正走上了社会,才发现整个社会是一个竞争激烈的社会,不努力就没有存活的希望。
通过这个月对Java基础的学习,总体感觉学习java还要有约束力,因为java一开始并不简单,如果没有听懂就放弃了,那是永远都学不好的,学习中,总能想到一些不学习的理由,这样下去,我们的java之树永远长不大,对此,我们要有自我约束的能力,遇到不会的不要急躁,可以先自己看老师上课所讲的讲义,然后还是不会可以上网百度或者看视频,问同学,毕竟我么班是一个团体应该互相帮助,学习,实在搞不懂的可以问老师,做到不留疑问到第二天,这样我们才能专心第二天的java学习,不让第一天的疑惑影响第二天的学习。课前稍作预习,因为陆老师讲的还是比较快的,课前的预习对上课老师所讲的内容能比较好的接受,对学习内容做一个初步的了解,这样学习更加的有效,在这里培训每天的知识量并不少,要是不预习,会跟不上老师的教学节奏。
篇13:java培训班心得体会
从学习java以来,已经进行过三次pta作业的训练。虽然每次作业的完成都遇到了些许困难和障碍,不是一帆风顺的,但通过自己的摸索,实践,总能完成作业要求,每次作业之后都有不同的收获。这些新的收获告诉我,实践出真知,动手会学习到更多东西。总结前面的三次作业,我发现面向对象程序设计这种语言不再那么神秘,我相信马上就能看到揭开神秘面纱后的的它。
(1).总结三次作业的知识迭代关系
第一次作业是练习java类型的使用,以及一些简单的语法。主要目的是让我们熟练运用java的基本操作,为后面的练习打下坚实基础。通过第一次作业,主要掌握了java类型的使用,及输入输出操作,起初输入操作是不太熟悉的。第二次作业比第一次作业难度肯定加大了,最直观的感受就是代码量增多了,题型也是求解某一类问题,开始要求用方法,而不是所有东西都没有章法地写在main里面。方法的使用是java的一大特色,所以必须要求掌握。第三次作业显然难度又加大了,作业的难度系数总是在上升状态的,这样才能得到有效的提高。这次作业的要求是另写一个类并实现多种方法。确实难住我了,不过通过摸索还是实现了。类的使用是java入门,因为java程序就是用类组成的。这三次作业是有java知识迭代关系的:第一次作业:掌握java的基本语法及类型,以及输入输出操作――>第二次作业:掌握java的方法使用,以及稍复杂的计算――>第三次作业:掌握java的类的使用及多种方法的使用,用new操作来创建一个类的对象,从而用对象去调用类的功能方法。这些都是一次一次递进的,每次作业完成后都会离真正的java更近一步,也能慢慢体会面向对象程序设计的特点。
(2).如何通过作业逐步从面向过程过渡到面向对象
作业通过一些具体要求,让我们学习java的用法。第一次作业,就从输入输出感受到了面向过程与面向对象的差别,第二次作业就学习到了方法的用法,第三次作业,就了解到了java里的类与方法,这些都是作业提供的从面向过程到面向对象的过渡。
(3).作业过程中遇到的问题及解决方法
问题1:作业一中的判断三角形类型中的判断等腰直角三角形测试点过不去
解决方法:试了很多组数据,发现有的数据与预想的不一样,原来计算机有精度要求,而等腰直角三角形的两直角边都是无理数,不能轻易用勾股定理判断,要用精度去规范判断等腰直角三角形。
java编程是极其严谨的,不容一丝差错,宁可牺牲其灵活性也要保证其稳定性。有一次我在java编译器里将类的名字命名为Test,结果一直报错,而程序又找不出错误,想破脑袋也想不明白,后来请教别人,被某位碰到过相似问题的仁兄一语道破,原来java类里面已经隐含定义了Test类,我们又定义一次会让编译器错乱,最后我把类名改了,果然可以运行了。真是一招不慎,满盘皆输。失之毫厘,差之千里,任何标点符号都不能出错。
★ 课设心得体会
★ 学习的好伙伴作文
★ 软件课说课稿
【java飞机大战心得体会(共13篇)】相关文章:
太原铁路局货运设备管理系统的研究和设计的论文2022-07-27
广东移动公司笔试题目2023-11-23
学习笔记范文2022-04-30
java个人学习总结22022-04-30
android实训心得体会2023-07-17
java年终总结2023-11-08
软件工程师个人年度工作总结2022-08-16
电子软件开发个人简历2023-05-17
液压实验心得体会范文2023-10-18
瑞安笔试经验2023-10-01