第一篇:java游戲制作培訓(xùn)班
java游戲制作培訓(xùn)班
隨著技術(shù)對(duì)游戲經(jīng)驗(yàn)的促進(jìn),游戲市場(chǎng)持續(xù)增長(zhǎng)。商業(yè)IT革命為我們節(jié)省了時(shí)間和金錢,從而提高了我們的工作水平,我們因此會(huì)花費(fèi)更多的時(shí)間和金錢在游戲上,來(lái)改善生活的整體質(zhì)量。這導(dǎo)致了游戲的快速增長(zhǎng),使它儼然成為盈利行業(yè)的重要組成部分。Java游戲開發(fā)者應(yīng)該注意到這里所蘊(yùn)藏著的巨大的商機(jī)。
4G夢(mèng)工場(chǎng)是培育3D技術(shù)與移動(dòng)互聯(lián)精英人才的高端職業(yè)實(shí)訓(xùn)基地。4G主打?qū)I(yè)有Android培訓(xùn)、IOS培訓(xùn)、Java培訓(xùn)、C/C++培訓(xùn)。報(bào)名學(xué)生享有先教學(xué)后付款等等優(yōu)惠,入學(xué)簽訂就業(yè)協(xié)議,畢業(yè)推薦就業(yè)。其他如有疑問(wèn)可以加右Q詳談。以下就是4G夢(mèng)工場(chǎng)為大家整理的資料。
目前來(lái)看Java游戲并沒(méi)有出現(xiàn)顯著的上升趨勢(shì),除手機(jī)游戲外,Java游戲基本處于蟄伏狀態(tài)。未來(lái)Java游戲開發(fā)可能迎來(lái)幾個(gè)契機(jī),下面一品威客網(wǎng)給您帶來(lái)幾個(gè)方面的介紹。
1、Sony或是任天堂決定在家用游戲機(jī)上支持Java
這個(gè)的希望非常渺茫的,但是考慮到微軟的XNA做到了跨windows和xbox360平臺(tái),也許sony在ps3屢遭敗仗的情況下會(huì)考慮一下支持Java。實(shí)際上現(xiàn)在的家用游戲機(jī)就是電腦,很多發(fā)燒友已經(jīng)可以在ps3和wii上運(yùn)行Java程序了,只是目前Java無(wú)法使用這些機(jī)器的硬件加速功能。
2、Java SE 6 Update N(之前被叫做 “Consumer JRE”)的發(fā)行
在這個(gè)新的版本中,sun號(hào)稱其將讓Java升級(jí)更方便,部署更簡(jiǎn)單(方便的探測(cè)客戶端的Java版本,并安裝程序需要的版本),用戶將能夠只安裝jre中他們需要的部分,對(duì)于暫時(shí)用不到的部分可以等到用的時(shí)候再安裝,同時(shí)加速Java虛擬機(jī)的啟動(dòng)速度(實(shí)際上就是在電腦剛開機(jī)的時(shí)候就啟動(dòng)Java虛擬機(jī),而不是在第一次運(yùn)行Java程序的時(shí)候),增加對(duì)swing的硬件加速支持。而新的Java plug-in將大幅增強(qiáng)applet的穩(wěn)定性,可靠性,將允許applet更改自己可以使用的內(nèi)存大小,選擇使用哪個(gè)特定版本的jre執(zhí)行。
實(shí)際上一旦applet變得穩(wěn)定,Java面對(duì)flash將體現(xiàn)出巨大的性能優(yōu)勢(shì),因此Java SE 6 Update N的發(fā)布將是Java游戲界未來(lái)一段時(shí)間內(nèi)最大的契機(jī)。
3、JavaFX的發(fā)布
JavaFX的目標(biāo)是讓JavaFX像flash一樣易于開發(fā),如果這個(gè)項(xiàng)目真的能成功的話,對(duì)于Java游戲的影響將非常巨大(不過(guò)由于缺乏flash所擁有的方便的開發(fā)工具,我對(duì)JavaFX成功的可能性深表懷疑)
4、手機(jī)進(jìn)一步發(fā)展
目前看來(lái)移動(dòng)設(shè)備的功能已經(jīng)越來(lái)越強(qiáng)大,手機(jī)的性能也許在不久的將來(lái)可以達(dá)到電腦的水準(zhǔn),手機(jī)游戲也將占據(jù)游戲市場(chǎng)越來(lái)越大的份額,那么由于手機(jī)的操作系統(tǒng)種類繁多,跨平臺(tái)的Java自然也會(huì)越來(lái)越受青睞。
第二篇:個(gè)人簡(jiǎn)歷java制作
設(shè)計(jì)如上所示界面程序,能實(shí)現(xiàn)簡(jiǎn)單簡(jiǎn)歷的制作。點(diǎn)擊下方[提交]按鈕,可以把簡(jiǎn)歷內(nèi)容顯示在下方的文本區(qū)中,點(diǎn)擊[保存]按鈕,可以把簡(jiǎn)歷內(nèi)容保存到指定的文件名中,點(diǎn)擊[清空]按鈕,可以把簡(jiǎn)歷內(nèi)容清除,點(diǎn)擊[退出]按鈕退出整個(gè)系統(tǒng)。1.實(shí)現(xiàn)以默認(rèn)文件名保存 2.快捷鍵的設(shè)計(jì)
3.保存到記事本時(shí)實(shí)現(xiàn)換行功能 4.JradioButton按鈕實(shí)現(xiàn)單選 ……………….代碼:
import java.awt.ActiveEvent;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.Event;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.Label;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.OutputStreamWriter;import java.sql.Date;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.*;
import javax.swing.ButtonGroup;import javax.swing.ComboBoxModel;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.KeyStroke;import javax.swing.ListSelectionModel;public class jianli extends JFrame{
/** * @param args */ Container container;JTextArea display;JTextField add,school,major,filename,name,age;JButton b1,b2,b3,b4;JRadioButton radio1,radio2;JComboBox box1,box2,box3,box4;JList course;JCheckBox like1,like2,like3,like4,like5,like6,like7;JLabel lable,label1,label2,label3,label4,label5,label6,label7,label8,label9,label10;JPanel p1,p2,p;JMenuBar bar;JScrollPane scroll,scroll1;JMenuItem manage1,manage2,manage3,manage4,color1,color2,color3,color4,color5;int i,year,month,day,Age;String str=“",s=new String(”“),favorate=new String(”“),Couese=new String(”“),sex=new String(”“);Object data[]={”java程序設(shè)計(jì)“,”VB.net程序設(shè)計(jì)“,”網(wǎng)頁(yè)制作“,”Flash動(dòng)畫制作“,”SQL數(shù)據(jù)庫(kù)“,”數(shù)據(jù)結(jié)構(gòu)“};
int[] C=new int[10];public jianli(){ this.setTitle(”個(gè)人簡(jiǎn)歷設(shè)計(jì)窗口“);//創(chuàng)建窗體;
container=this.getContentPane();
//獲取頂層容器;
container.setBackground(Color.pink);//設(shè)置窗體的默認(rèn)背景色為粉色; container.setLayout(null);bar=new JMenuBar();
//創(chuàng)建菜單欄;
buildMainMenu(bar);//自定義組建菜單的方法; this.setJMenuBar(bar);//把菜單欄掛在該窗體上;
lable=new JLabel(”個(gè)人簡(jiǎn)歷“,JLabel.CENTER);//個(gè)人簡(jiǎn)歷的題目標(biāo)簽;
lable.setFont(new java.awt.Font(”Dialog“,1,30));//設(shè)置個(gè)人簡(jiǎn)歷該標(biāo)簽字體的樣式為粗體,字號(hào)30;
p=new JPanel(new FlowLayout(FlowLayout.CENTER));
p.add(lable);
p.setBackground(getForeground());
container.add(p);//設(shè)置標(biāo)簽的布局;
p.setBounds(5,5,580,50);
//x=5,y=5,width=580,height=50;
label2=new JLabel(”姓名: “);
name=new JTextField(35);
label3=new JLabel(”性別: “);
radio1=new JRadioButton(”男“);
radio1.setBackground(getForeground());
radio2=new JRadioButton(”女“);
radio2.setBackground(getForeground());
ButtonGroup bg=new ButtonGroup();
bg.add(radio1);
//ButtonGroup對(duì)JRadioButton設(shè)置單選功能;
bg.add(radio2);
//添加事件以獲得所選性別;
radio1.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent e){
} // TODO Auto-generated method stub sex=”“;sex+=radio1.getText();
});
radio2.addActionListener(new ActionListener()
{
@Override public void actionPerformed(ActionEvent e){
} // TODO Auto-generated method stub sex=”“;sex+=radio2.getText();
});
p1=new JPanel(new FlowLayout(FlowLayout.LEFT));
p1.setBounds(5,70,580,520);
p1.setBackground(getForeground());
p1.add(label2);
p1.add(name);
p1.add(label3);
p1.add(radio1);
p1.add(radio2);
//設(shè)置生日;
label4=new JLabel(”生日:
“);
p1.add(label4);
box1=new JComboBox();
box1.setEditable(true);
createY();
//建數(shù)組存年份;
label5=new JLabel(”年
“);
p1.add(box1);
p1.add(label5);
box2=new JComboBox();
creatM();//創(chuàng)建月份;
label6=new JLabel(”月
“);
box3=new JComboBox();
creatD();//創(chuàng)建天數(shù);
label7=new JLabel(”日
“);
box1.addItemListener(new Select());
box2.addItemListener(new Select());
box3.addItemListener(new Select());
p1.add(box2);
p1.add(label6);p1.add(box3);p1.add(label7);label8=new JLabel(”年齡:“);age.setText(”412“);age.setEditable(false);//creatA();p1.add(label8);
age=new JTextField(10);
p1.add(age);
//設(shè)計(jì)住址;
label9=new JLabel(”住址: “);
add=new JTextField(47);
p1.add(label9);
p1.add(add);
//設(shè)計(jì)第三行;
label10=new JLabel(”政治面貌:
“);box4=new JComboBox();box4.addItem(”黨員“);box4.addItem(”團(tuán)員“);
box4.addItem(”其他民主黨派“);
JLabel l1=new JLabel(”
所學(xué)課程:
“);
course=new JList();
course.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);//選擇模式為多選;
course.setListData(data);
course.setSelectedIndex(0);
course.setSize(20, 5);
scroll1=new JScrollPane();
scroll1.setHorizontalScrollBarPolicy(scroll1.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll1.setVerticalScrollBarPolicy(scroll1.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll1.setPreferredSize(new Dimension(250,100));
scroll1.setViewportView(course);
p1.add(label10);
p1.add(box4);
p1.add(l1);
p1.add(scroll1);
//設(shè)計(jì)第四行;
JLabel l2=new JLabel(”所學(xué)專業(yè):“);
major=new JTextField(45);
p1.add(l2);
p1.add(major);
//設(shè)計(jì)愛好;
JLabel l3=new JLabel(”愛好:
“);
like1=new JCheckBox(”唱歌
“);
like1.setBackground(getForeground());// 使組件的前景色與頂層容器的背景色一致;
like1.addItemListener(new Like());
like2=new JCheckBox(”跳舞
“);
like2.setBackground(getForeground());
like2.addItemListener(new Like());
like3=new JCheckBox(”乒乓球
“);
like3.setBackground(getForeground());
like3.addItemListener(new Like());
like4=new JCheckBox(”籃球
“);
like4.setBackground(getForeground());
like4.addItemListener(new Like());
like5=new JCheckBox(”足球
“);
like5.setBackground(getForeground());
like5.addItemListener(new Like());
like6=new JCheckBox(”樂(lè)器
“);
like6.setBackground(getForeground());
like6.addItemListener(new Like());
like7=new JCheckBox(”表演“);
like7.setBackground(getForeground());
like7.addItemListener(new Like());
p1.add(l3);
p1.add(like1);p1.add(like2);
p1.add(like3);
p1.add(like4);p1.add(like5);
p1.add(like6);
p1.add(like7);
//設(shè)計(jì)畢業(yè)院校;
JLabel l4=new JLabel(”畢業(yè)院校:
“);
school=new JTextField(44);
p1.add(l4);
p1.add(school);
//設(shè)計(jì)文件名;
JLabel l5=new JLabel(”文件名:
“);
filename=new JTextField(45);
p1.add(l5);
p1.add(filename);
display=new JTextArea(8,3);
//創(chuàng)建文本域,并設(shè)置其大??;
display.setEditable(false);
//該文本域不可編輯;
scroll=new JScrollPane();
//創(chuàng)建滾動(dòng)面板;
scroll.setHorizontalScrollBarPolicy(scroll.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setPreferredSize(new Dimension(560,200));
scroll.setViewportView(display);
//將文本域放入滾動(dòng)面板上;
p1.add(scroll);
container.add(p1);
//設(shè)計(jì)按鈕;
p2=new JPanel();
p2.setLayout(new FlowLayout(FlowLayout.CENTER));
b1=new JButton(”提交“);
b1.addActionListener(new B1());
p2.add(b1);
b2=new JButton(”保存“);
b2.addActionListener(new B2());
p2.add(b2);
b3=new JButton(”退出“);
b3.addActionListener(new B3());
p2.add(b3);
b4=new JButton(”清空“);
b4.addActionListener(new B4());
p2.add(b4);
p2.setBounds(150, 600, 300, 40);
p2.setBackground(getForeground());
container.add(p2);
this.setSize(600,700);
this.setResizable(false);//固定窗體;
this.show();
//窗體可見;
} { @Override public void itemStateChanged(ItemEvent e){
class Like implements ItemListener
// TODO Auto-generated method stub
if((JCheckBox)e.getItem()==like1)
if(e.getStateChange()==e.SELECTED)//判斷是否被選中;
favorate+=like1.getText()+” “;
if((JCheckBox)e.getItem()==like2)
if(e.getStateChange()==e.SELECTED)
favorate+=like2.getText()+” “;
if((JCheckBox)e.getItem()==like3)
if(e.getStateChange()==e.SELECTED)
favorate+=like3.getText()+” “;
if((JCheckBox)e.getItem()==like4)
if(e.getStateChange()==e.SELECTED)
favorate+=like4.getText()+” “;
if((JCheckBox)e.getItem()==like5)
if(e.getStateChange()==e.SELECTED)
favorate+=like5.getText()+” “;
if((JCheckBox)e.getItem()==like6)
if(e.getStateChange()==e.SELECTED)
favorate+=like6.getText()+” “;
if((JCheckBox)e.getItem()==like7)
if(e.getStateChange()==e.SELECTED)
favorate+=like7.getText();
}
} public void ShowText(){
//course.setSelectedIndices(C);
Object S[]= course.getSelectedValues();//返回所選值的數(shù)組;
str=new String(”
個(gè)人簡(jiǎn)歷“);
str+=”n“;
str+=”姓名:“+name.getText()+”n“;str+=”性別:“+sex+”n“;
str+=”生日:“+box1.getSelectedItem().toString()+”“+box2.getSelectedItem().toString()+”月“+box3.getSelectedItem().toString()+”日“+”n“;
str+=”年齡:“+s+”n“;
str+=” 住址:“+add.getText()+”n“;
str+=”政治面貌:“+(String)box4.getSelectedItem()+”n“;
str+=”所學(xué)課程:“;
for(int i=0;i { str+=S[i]+” “;} 年 str+=”rn“;str+=”所學(xué)專業(yè):“+major.getText()+”n“;str+=”愛好:“+favorate+”n“; str+=”畢業(yè)院校:“+school.getText()+”n“; str+=”文件名:“+filename.getText(); display.setText(str);} class B1 implements ActionListener //提交按鈕; { @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub ShowText();} } class B2 implements ActionListener //保存按鈕; { @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub File file=null;JFileChooser fc=new JFileChooser(); //創(chuàng)建文件對(duì)話框?qū)ο螅?fc.setSelectedFile(new File(filename.getText()));//設(shè)置顯示文件名; int select=fc.showSaveDialog(getParent());//顯示保存對(duì)話框; if(select==JFileChooser.APPROVE_OPTION){ file=fc.getSelectedFile(); //獲取用戶選擇的文件; } try { FileWriter fw=new FileWriter(file);//為給定的對(duì)象file創(chuàng)建字符輸入流; BufferedWriter bw=new BufferedWriter(fw); //緩沖; String st=display.getText();String st1[]=st.split(”n“); //根據(jù)給定的正則表達(dá)式(“n”換行)的匹配 來(lái)拆分此字符串; for(String s:st1) { } bw.write(s);//把換行匹配后的字符串寫入緩沖區(qū) bw.newLine(); // 終止每行的輸入,開啟下一行 bw.flush(); //刷空輸出流,并輸出所有被緩存的字節(jié); } fw.close(); //關(guān)閉輸出流; }catch(Exception ee){ } } class B3 implements ActionListener //退出按鈕; { } { @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub } name.setText(“");major.setText(”“);school.setText(”“);filename.setText(”“);display.setText(”“);@Override public void actionPerformed(ActionEvent e){ } // TODO Auto-generated method stub System.exit(0);class B4 implements ActionListener } private void creatD(){ } private void creatM(){ // TODO Auto-generated method stub for(int k=1;k<=12;k++)box2.addItem(k);// TODO Auto-generated method stub for(int j=1;j<=31;j++){ } box3.addItem(j); } private void createY(){ // TODO Auto-generated method stub for(i=1600;i<=2012;i++){ box1.addItem(i);} } class Select implements ItemListener { @Override public void itemStateChanged(ItemEvent e){ // TODO Auto-generated method stub if(e.getStateChange()==ItemEvent.SELECTED){ Calendar c=Calendar.getInstance();//獲得系統(tǒng)當(dāng)前日期 int Y=c.get(Calendar.YEAR); int M=c.get(Calendar.MONTH)+1;//系統(tǒng)日期從0開始算起 int D=c.get(Calendar.DAY_OF_MONTH); int year=Integer.parseInt(box1.getSelectedItem().toString()); int month=Integer.parseInt(box2.getSelectedItem().toString());int day=Integer.parseInt(box3.getSelectedItem().toString());if(Y==year)Age=0;else if(month>M||(month==M&&day>D))Age=Y-year-1; //如果2012年的生日還沒(méi)過(guò),則年齡=兩個(gè)年份的差再減1; else if(month s=String.valueOf(Age); age.setText(s);} } } //建菜單; private void buildMainMenu(JMenuBar bar2){ // TODO Auto-generated method stub JMenu m1,m2; //設(shè)置管理菜單; m1=new JMenu(”管理“,true);manage1=new JMenuItem(”提交(A)“);manage1.setAccelerator(KeyStroke.getKeyStroke(”A“));//設(shè)置快捷鍵; manage1.addActionListener(new manage());m1.add(manage1); } manage2=new JMenuItem(”保存(S)“);manage2.setAccelerator(KeyStroke.getKeyStroke(”S“));manage2.addActionListener(new manage());m1.add(manage2);manage4=new JMenuItem(”清空(C)“);manage4.setAccelerator(KeyStroke.getKeyStroke(”C“));manage4.addActionListener(new manage());m1.add(manage4);manage3=new JMenuItem(”退出(T)“);manage3.setAccelerator(KeyStroke.getKeyStroke(”E“));manage3.addActionListener(new manage());m1.add(manage3);bar.add(m1);//設(shè)置顏色菜單; m2=new JMenu(”顏色“,true);color1=new JMenuItem(”紅色“);color2=new JMenuItem(”藍(lán)色“);color3=new JMenuItem(”黃色“);color4=new JMenuItem(”灰色“);color5=new JMenuItem(”綠色“);color1.addActionListener(new colorchanged());color2.addActionListener(new colorchanged());color3.addActionListener(new colorchanged());color4.addActionListener(new colorchanged());color5.addActionListener(new colorchanged());m2.add(color1);m2.add(color2);m2.add(color3);m2.add(color4);m2.add(color5);bar.add(m2);class manage implements ActionListener { @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getSource()==manage1)//提交菜單項(xiàng) { ShowText();} else if(e.getSource()==manage2)//保存菜單項(xiàng) { } File f=null;JFileChooser fc=new JFileChooser();int n=fc.showSaveDialog(getParent());if(n==JFileChooser.APPROVE_OPTION){ } try { FileWriter fw=new FileWriter(f);BufferedWriter bw=new BufferedWriter(fw);bw.write(display.getText());bw.close();f=fc.getSelectedFile();setTitle(filename.getText());fw.close();}catch(Exception ee){ } ee.printStackTrace();} else if(e.getSource()==manage4) //清空菜單項(xiàng) { //container.setBackground(Color.black);name.setText(”“);major.setText(”“);school.setText(”“);filename.setText(”“);display.setText(”“);} else if(e.getSource()==manage3) //退出菜單項(xiàng) { } System.exit(0);} class colorchanged implements ActionListener { @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getActionCommand()==”黃色“){ container.setBackground(Color.YELLOW);//display.setBackground(Color.YELLOW); } else if(e.getActionCommand()==”藍(lán)色“)container.setBackground(Color.BLUE);else if(e.getActionCommand()==”綠色“)container.setBackground(Color.GREEN);else if(e.getActionCommand()==”灰色“)container.setBackground(Color.GRAY);else if(e.getActionCommand()==”紅色")container.setBackground(Color.RED); } } public static void main(String[] args){ // TODO Auto-generated method stub new jianli();} } 游戲資源是從cping1982的博客里下載的(http://blog.csdn.net/cping1982/article/details/6725015)。 下載下來(lái)的源碼是反編譯的,我按照自己的思路,盡量模擬跟它一樣的功能效果,用自己的代碼實(shí)現(xiàn),并且自己寫了一個(gè)地圖編輯器。用到的技術(shù)大概有:swing基本控件,線程,XML讀寫,IO,反射的簡(jiǎn)單應(yīng)用,2D繪圖。 最重要的一個(gè)自定義類:Canvas。 每個(gè)canvas都有一個(gè)render方法和update方法,每個(gè)canvas又可以添加別的canvas,類似swing的component結(jié)構(gòu),每個(gè)canvas執(zhí)行render和update的時(shí)候都會(huì)遍歷所有子canvas執(zhí)行render和update,從而實(shí)現(xiàn)所有canvas都執(zhí)行渲染和更新。游戲的刷新機(jī)制: 這個(gè)刷新機(jī)制是直接學(xué)的原代碼里面的實(shí)現(xiàn)機(jī)制,看它沒(méi)注釋的代碼著實(shí)蛋疼,還是請(qǐng)教了我?guī)煾礵esolatecity大神才理解的--!。 最高層是一個(gè)繼承JFrame的GameFrame,實(shí)現(xiàn)了Runnable,游戲啟動(dòng)后會(huì)單獨(dú)運(yùn)行不斷循環(huán)刷新,每隔大概15ms就執(zhí)行一次render,并將整個(gè)循環(huán)所用時(shí)間通過(guò)update方法傳給canvas,最高層canvas再一層一層傳遞下去,實(shí)現(xiàn)所有canvas的渲染和更新。大致代碼實(shí)現(xiàn)如下: [java] view plaincopy 1.while(gameOn){ 2.// 獲取開始時(shí)的系統(tǒng)時(shí)間 3.long startTime = System.currentTimeMillis();4.5.// 標(biāo)記時(shí)間所用變量 6.long l1; 7.long l2 = System.currentTimeMillis();8.long l3 = System.currentTimeMillis();9.10.// 執(zhí)行for循環(huán),直到經(jīng)過(guò)了step毫秒 11.for(l1 = l3l2){ 12.l3 = System.currentTimeMillis();13.} 14.// for循環(huán)結(jié)束,開始渲染和更新 15.l2 = System.currentTimeMillis();// 重置l2 16.17.this.getCurrentCanvas().render(g2);// 渲染 18.19.this.getGraphics().drawImage(bufImg, 0, 0, null);// 將緩沖圖片畫到JFrame 20.21.long endTime = System.currentTimeMillis();// 獲取結(jié)束時(shí)的系統(tǒng)時(shí)間 22.23.this.getCurrentCanvas().update(endTime 元素”的映射關(guān)系將時(shí)間和對(duì)應(yīng)元素存儲(chǔ)到一個(gè)IdentityHashMap里,然后游戲的主canvas在update的時(shí)候遍歷IdentityHashMap,若當(dāng)前時(shí)間滿足map里面的時(shí)間,則將對(duì)應(yīng)的元素提取出來(lái),添加到當(dāng)前的子canvas列表里面,從而一個(gè)新的元素(或敵人,或提示消息等)就被添加到了界面上。這里我用到了一個(gè)比較少用的IdentityHashMap,原本直接用的是HashMap,后來(lái)發(fā)現(xiàn)一個(gè)時(shí)間有時(shí)候要對(duì)應(yīng)多個(gè)元素,然后上網(wǎng)查到了這個(gè)東東,但是由于鍵是按照對(duì)象來(lái)存儲(chǔ)的,所以要把時(shí)間用String對(duì)象來(lái)存儲(chǔ),搞得讀取和存儲(chǔ)的時(shí)候各種麻煩。結(jié)果后來(lái)師傅一指點(diǎn)才知道,可以直接用HashMap來(lái)存儲(chǔ)“時(shí)間--ArrayList”,這樣又方便又直接。--!后來(lái)嫌麻煩也不去改了。。 地圖編輯器: 地圖編輯器沒(méi)有什么特別費(fèi)腦袋的地方,就是各種swing控件的運(yùn)用,還有xml的讀寫,簡(jiǎn)單的反射應(yīng)用等。 由于整個(gè)游戲基本上都是在邊學(xué)變寫,所以很多地方寫的很粗糙,以至于后來(lái)去整理的時(shí)候發(fā)現(xiàn)前面的代碼結(jié)構(gòu)簡(jiǎn)直丑死了--,改都該了半天。 最后附上源碼下載地址,如果有興趣的話可以互相探討學(xué)習(xí)。 下載地址:http://download.csdn.net/download/jianglihui0330/4493082 游戲截圖: 地圖編輯器截圖: 重點(diǎn): 1簡(jiǎn)歷制作各式 2簡(jiǎn)歷 3簡(jiǎn)歷 4簡(jiǎn)歷 自我認(rèn)知。。 我們做什么? 我們能做什么? 我們?nèi)绾稳?shí)現(xiàn)? 我的職業(yè)規(guī)劃如何? 規(guī)劃符合性格/興趣/能力? 簡(jiǎn)歷的基本框架 ------------ 基本信息: 姓名 性別 出生年月(22-25)出生年月盡量往中間靠 詳細(xì)的聯(lián)系方式(手機(jī)號(hào)碼和電子郵箱) 外語(yǔ)水平(CET-4/CET-6以及JLPT-3) 專業(yè),學(xué)歷,學(xué)校。 政治面貌:中共黨員 工作年限? 不到2年寫月比如18個(gè)月 民族? 一般不用 照片要還是不要?? 什么情況下可以貼。。 注意:電子郵箱避免使用QQ郵箱或數(shù)字類郵箱。 非計(jì)算機(jī)相關(guān)專業(yè)不體現(xiàn),放在簡(jiǎn)歷最后單寫。 211院校,一本院校在學(xué)校后面括號(hào)注明。 不體現(xiàn)升高,身體狀況,婚否 教育背景 起止日期--學(xué)校--專業(yè)--學(xué)歷 各式:2006.9--2010.6×× 大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)統(tǒng)招本科 注意:只寫搞學(xué)歷 自考無(wú)需標(biāo)注! 外語(yǔ)能力 各式:CET-4級(jí) 能獨(dú)立閱讀計(jì)算機(jī)相關(guān)英文文檔,能流利進(jìn)行英語(yǔ)日常對(duì)話JSPT-4級(jí) 能閱讀日語(yǔ)文檔和警醒日常對(duì)話 ------------ 求職目標(biāo) java開發(fā)工程師/白盒測(cè)試工程師/ 項(xiàng)目實(shí)施/技術(shù)支持/運(yùn)營(yíng)維護(hù)/售前技術(shù)支持/ 售后技術(shù)支持/銷售/ 注意 一份簡(jiǎn)歷只體現(xiàn)一個(gè)職位。 有多個(gè)求職愿望的,準(zhǔn)備多份簡(jiǎn)歷 ------------ 掌握技能 書寫方法:按照所學(xué)內(nèi)容的掌握程度或技術(shù)類別來(lái)寫 Core java 框架 Java Web 數(shù)據(jù)庫(kù) 服務(wù)器 其他(C,PHP,網(wǎng)絡(luò)協(xié)議,Android等) 注意:技術(shù)掌握程度修飾詞的恰當(dāng)描述 熟練應(yīng)用,熟練掌握,熟悉,掌握,了解 熟練Core java Core java 熟練Mysql Oracle數(shù)據(jù)庫(kù),熟練掌握基于Oracle9ide 數(shù)據(jù)庫(kù)編程 熟練使用linux unix操作系統(tǒng) 熟練使用 struts,sping,hibernate三大框架 熟悉 Javascript TomcatHtml OOAD UML Rational ------------ 項(xiàng)目經(jīng)驗(yàn) 項(xiàng)目名稱 開發(fā)平臺(tái)(Unix/Linuix) 開發(fā)工具(MyEclipse+Tomcat+Mysql) 技術(shù)實(shí)現(xiàn)(Struts+hib+spring+js+jsp) 項(xiàng)目描述(簡(jiǎn)單,清除描述)簡(jiǎn)略 責(zé)任描述(描述本人在該項(xiàng)目中負(fù)責(zé)的模塊)微細(xì) 項(xiàng)目收獲(說(shuō)明實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題及解決方案)全面 項(xiàng)目簡(jiǎn)介 (1)模擬當(dāng)當(dāng)網(wǎng)主要功能(2)主要包含以下功能模塊a.產(chǎn)品瀏覽模塊 b.購(gòu)物車模塊 c.用戶管理模塊 d.創(chuàng)建訂單模塊 a.Struts2框架 b.JDBC(多表聯(lián)合查詢)+dbcp連接池(控制Connection對(duì)象的數(shù)量,提高程序的穩(wěn)定性)連接池的好處:1.時(shí)刻與DB連接,避免頻繁的創(chuàng)建與銷毀Connection對(duì)象 2.將Connection控制在一定范圍內(nèi),保證服務(wù)器穩(wěn)定(3)主要采用哪些技術(shù) max:最大Connection數(shù)量,超過(guò)讓其等待 min:初始Connection數(shù)量,不超過(guò)可以訪問(wèn),超過(guò)就新建 c.客戶端采用JQuery+Ajax ------------ 工作經(jīng)驗(yàn) 書寫格式:起止時(shí)間--公司名稱--職位 如:2009.6-2010.5 北京光華軟件公司軟件開發(fā)工程師 主要負(fù)責(zé).....(所獲的技術(shù)或者其他能替提升) 注意:不能用空當(dāng)期,頻繁跳槽并且工作性質(zhì)相近的最好合并。 時(shí)間由近及遠(yuǎn)排列,和計(jì)算機(jī)相關(guān)的工作放在最上面 ------------ 實(shí)習(xí)經(jīng)歷(培訓(xùn)經(jīng)歷) 各式:2010.3-2010.9 xxxx科技公司Java軟件開發(fā)工程師 ------------ 所獲證書(所獲獎(jiǎng)項(xiàng)) 2012.9 高級(jí)軟件工程師國(guó)家工信部發(fā) 2012.7 OCJP資格認(rèn)字證書 美國(guó)認(rèn)證 注意:證書,獎(jiǎng)項(xiàng)部分分類別,獲的過(guò)的都要寫上(校內(nèi),校外) 簡(jiǎn)歷中的大部分內(nèi)容是經(jīng)歷和成績(jī) ------------ 自我評(píng)價(jià) 結(jié)構(gòu):專業(yè)技能 :通過(guò)某項(xiàng)市級(jí)工作或?qū)嵙?xí)經(jīng)歷或培訓(xùn),獲的;獲得什么技能的掌握程度如何 綜合能力:通過(guò)某項(xiàng)市級(jí)做過(guò)什么時(shí)期描述所得能力,要和未來(lái)求職崗位相近 (溝通能力,人際管理和團(tuán)隊(duì)精神) 注意:避免順口溜式的描述 ------------ 興趣愛好 最好體現(xiàn)出個(gè)性。 唱歌/跳舞/上網(wǎng)避免寫。如果寫也可以,但要體現(xiàn)愛好的程度 ---------- 外觀 1-2頁(yè)左右A4紙 布局 在結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)那疤嵯?,層次分?/p> 字體 建議最好2種字體 正文的字體要適中,標(biāo)題和姓名可以用稍大字體突出 副標(biāo)題4號(hào),內(nèi)容5號(hào)(宋體) 要考慮打印后的效果和排版 各式:xxx.doc 避免冗長(zhǎng)撰寫簡(jiǎn)歷還是以簡(jiǎn)潔精練,重點(diǎn)突出為好 避免虛夸不真實(shí)的描述和捏造工作經(jīng)歷和項(xiàng)目 避免過(guò)謙敘述客觀事實(shí),適當(dāng)包裝資歷和能力 避免遺漏要點(diǎn)基本情況/學(xué)歷/資歷/特長(zhǎng)/求職意向/聯(lián)系方式等 避免喧兵奪主有的應(yīng)聘者為了突出自己一專多能的素質(zhì),在寫簡(jiǎn)歷時(shí),主次不分,輕重?zé)o別;甚至把業(yè)余愛好濃墨重彩,喧兵奪主 避免書面差錯(cuò)錯(cuò)別字,排版混亂,數(shù)字錯(cuò)誤,時(shí)間年限的錯(cuò)誤 ---------- 招聘會(huì) 前程無(wú)憂 中華英才網(wǎng) 智聯(lián)招聘 csdn 一級(jí)方式: 招聘會(huì)現(xiàn)場(chǎng)/網(wǎng)絡(luò)投遞/直接上門 網(wǎng)絡(luò)投遞的方法: 各網(wǎng)站注冊(cè)直接點(diǎn)擊投遞按鈕+文本粘貼。 投遞時(shí)間: 周一至周五上午8:30至9:00最佳投遞時(shí)間 郵件主題: 姓名+需求+優(yōu)勢(shì) 注意:已投簡(jiǎn)歷一定要備份,求職當(dāng)天隨身攜帶至少5份個(gè)人紙質(zhì)簡(jiǎn)歷。 ---------- 投遞的簡(jiǎn)歷why沒(méi)有回音? 有以下幾種原因: 海投的這個(gè)單位不是真正的在招聘 信息過(guò)期,已經(jīng)找到合適的人選了 所投職位不相符 能力與企業(yè)不想符合,把你淘汰了 HR根本就沒(méi)有看到你的簡(jiǎn)歷,這與你優(yōu)秀與否無(wú)關(guān) 遇到這種情況,我們要怎樣處理呢? 電話追過(guò)五問(wèn)問(wèn),別忘了說(shuō)自己的名字,投遞至今啊和投遞職位 簡(jiǎn)歷市時(shí)常更新 使用普遍認(rèn)知的措辭 簡(jiǎn)歷中所提及的關(guān)鍵字盡量使用普遍認(rèn)知熱措辭,如職務(wù)名稱等相關(guān)經(jīng)驗(yàn)(個(gè)人優(yōu)勢(shì))要重點(diǎn)突出 簡(jiǎn)歷中要體現(xiàn)自己有能力勝任 簡(jiǎn)歷命名 畢業(yè)時(shí)間.學(xué)歷.優(yōu)勢(shì)(工作年限/中共黨員/英語(yǔ)等級(jí)) 姓名.崗位 2018年Java培訓(xùn)班如何選擇?兄弟連南京Java培訓(xùn) Java語(yǔ)言現(xiàn)在是比較普遍的一種計(jì)算機(jī)語(yǔ)言了,現(xiàn)在很多人也都從事Java開發(fā)的相關(guān)工作,所以Java培訓(xùn)機(jī)構(gòu)也很多.Java培訓(xùn)機(jī)構(gòu)眾多,如何選擇合適的一家去學(xué)習(xí)呢?相信很多剛畢業(yè)的大學(xué)生也是想通過(guò)Java培訓(xùn),來(lái)自我增值,找個(gè)待遇好的工作.選擇靠譜的Java培訓(xùn)機(jī)構(gòu)很重要,畢竟學(xué)Java現(xiàn)在培訓(xùn)一下費(fèi)用都挺高的,各家的費(fèi)用上其實(shí)相差不大,主要是要比較教學(xué)質(zhì)量和后期的一些畢業(yè)學(xué)員的薪資待遇上.如何選擇適合自己的Java培訓(xùn)機(jī)構(gòu)呢? 首先,要選擇面授的Java培訓(xùn)機(jī)構(gòu)比較好.因?yàn)橐曨l教學(xué)的Java培訓(xùn),對(duì)學(xué)生自己的基礎(chǔ)要求也比較高,沒(méi)有基礎(chǔ)的話很難靠看視頻完全學(xué)會(huì).基礎(chǔ)打不扎實(shí)的話,到后期的項(xiàng)木開發(fā)中更難跟上,更別提面試工作時(shí)暴露的基礎(chǔ)不扎實(shí)等缺點(diǎn),影響自己就業(yè)了.選擇面授的Java培訓(xùn)機(jī)構(gòu)比較好,這樣子有不懂的可以當(dāng)堂提問(wèn),Java培訓(xùn)還提供課后名師輔導(dǎo),在自習(xí)時(shí)間也都配有解答老師,及時(shí)解決學(xué)生的問(wèn)題,真正學(xué)會(huì)Java開發(fā)技術(shù).兄弟連南京Java培訓(xùn):http://nj.itxdl.cn/第三篇:射擊游戲 Java
第四篇:java之簡(jiǎn)歷制作
第五篇:2018年Java培訓(xùn)班如何選擇?