坦克游戲——實現坦克的移動和子彈的發射

          Posted on 2006-09-02 11:07 久城 閱讀(1873) 評論(5)  編輯  收藏 所屬分類: JavaTest

          感慨:

          偶的坦克終于可以移動,可以發射子彈了~~

          不過從昨天軟件開發與實踐的老師的角度去說~我這樣做是不對的~開發一個程序之前需要做好構架,而我則是想到哪做哪..做錯了再改!哈哈!..還有待學習..

          代碼:

          import java.awt.*;
          import javax.swing.*;
          import java.awt.event.*;

          class YouXi extends JFrame
          {
          ?Container c;
          ?Draw_table d_table;? //中間的畫板
          ?Mypanel panel_east;? //右邊的面板
          ?private static Icon[] faces;
          ?YouXi()
          ?{
          ??super("傻瓜坦克??????????????????????????????????????????????????????????????????????? 版權所有:久城");
          ??c = getContentPane();
          ??c.setLayout(new BorderLayout());
          ??panel_east = new Mypanel();
          ??panel_east.setLayout(new GridLayout(6,1,20,20));
          ??
          ??faces= new Icon[]{new ImageIcon("d:\11.jpg","")};
          ??JButton button1 = new JButton("重新開始");
          ??JButton button2 = new JButton(new String ("傻瓜坦克"),new ImageIcon(getClass().getResource("11.jpg")));
          ??JTextField text1 = new JTextField("realsmy");
          ??JTextField text2 = new JTextField("0");
          ??JLabel lb1 = new JLabel("玩? 家");
          ??JLabel lb2 = new JLabel("殺人數");
          ??text1.setEditable(false);
          ??text2.setEditable(false);
          ??panel_east.add(button2);
          ??panel_east.add(lb1);
          ??panel_east.add(text1);
          ??panel_east.add(lb2);
          ??panel_east.add(text2);
          ??panel_east.add(button1);
          ??//添加鍵盤監聽,不知道加到哪好,隨表找個按鈕加上去了哈哈!
          ??button2.addKeyListener(new KeyAdapter()
          ???{
          ??????? public void keyPressed(KeyEvent e)
          ????{
          ????? if(e.getKeyCode()==KeyEvent.VK_ENTER)
          ????? {??
          ?????? if(d_table.fangxiang == 1)
          ?????? {
          ???????d_table.zx = d_table.x+50;
          ???????d_table.zy = d_table.y+10;
          ???????d_table.key_fangxiang = 1;
          ?????? }
          ?????? if(d_table.fangxiang == 2)
          ?????? {
          ???????d_table.zx = d_table.x+10;
          ???????d_table.zy = d_table.y+50;
          ???????d_table.key_fangxiang = 2;
          ?????? }
          ?????? if(d_table.fangxiang == 3)
          ?????? {
          ???????d_table.zx = d_table.x-10;
          ???????d_table.zy = d_table.y+10;
          ???????d_table.key_fangxiang = 3;
          ?????? }
          ?????? if(d_table.fangxiang == 4)
          ?????? {
          ???????d_table.zx = d_table.x+10;
          ???????d_table.zy = d_table.y-10;
          ???????d_table.key_fangxiang = 4;
          ?????? }
          ?????? d_table.key = true;
          ????? }
          ????? if(e.getKeyCode()==KeyEvent.VK_UP){
          ??????d_table.y-=10;
          ??????d_table.fangxiang = 4;
          ????? }
          ????? if(e.getKeyCode()==KeyEvent.VK_DOWN){
          ??????d_table.y += 10;
          ??????d_table.fangxiang = 2;
          ????? }
          ????? if(e.getKeyCode()==KeyEvent.VK_LEFT){
          ??????d_table.x -= 10;
          ??????d_table.fangxiang = 3;
          ????? }
          ????? if(e.getKeyCode()==KeyEvent.VK_RIGHT){
          ??????d_table.x +=10;
          ??????d_table.fangxiang = 1;
          ????? }

          ???? }
          ???}
          ????);
          ??d_table = new Draw_table();
          ??d_table.setBackground(Color.red);
          ??c.add(panel_east,BorderLayout.EAST);
          ??c.add(d_table,BorderLayout.CENTER);
          ??setSize(600,600);
          ??setLocation(200,100);
          ??setVisible(true);
          ?}

          ?public static void main(String args[])
          ?{
          ??YouXi yx = new YouXi();
          ??yx.setDefaultCloseOperation(EXIT_ON_CLOSE);
          ?}
          }

          //定義畫板類
          class Draw_table extends Canvas// implements runnable
          {
          ?static boolean key = false;
          ?static int x=20,y=20;??????? //坦克坐標
          ?static int zx,zy;??????????? //子彈起點坐標
          ?static int fangxiang = 1;??????? //定義車頭方向
          ?static int key_fangxiang = 1;? //定義子彈方向
          ?int k = 1;
          ?public void paint(Graphics g)
          ?{
          ??if(fangxiang == 1)
          ??{
          ???g.setColor(Color.black);
          ???g.fillRect(x,y,50,30);?? //車身
          ???g.fillRect(x+50,y+10,10,10);//車頭=子彈
          ???g.setColor(Color.blue);
          ???g.fillOval(x+15,y+5,20,20);
          ??}
          ??if(fangxiang == 2)
          ??{
          ???g.setColor(Color.black);
          ???g.fillRect(x,y,30,50);?? //車身
          ???g.fillRect(x+10,y+50,10,10);//車頭=子彈
          ???g.setColor(Color.blue);
          ???g.fillOval(x+5,y+15,20,20);
          ??}
          ??if(fangxiang == 3)
          ??{
          ???g.setColor(Color.black);
          ???g.fillRect(x,y,50,30);?? //車身
          ???g.fillRect(x-10,y+10,10,10);//車頭=子彈
          ???g.setColor(Color.blue);
          ???g.fillOval(x+15,y+5,20,20);
          ??}
          ??if(fangxiang == 4)
          ??{
          ???g.setColor(Color.black);
          ???g.fillRect(x,y,30,50);?? //車身
          ???g.fillRect(x+10,y-10,10,10);//車頭=子彈
          ???g.setColor(Color.blue);
          ???g.fillOval(x+5,y+15,20,20);
          ??}
          ??if(k==1)
          ??{
          ???try{Thread.sleep(200);}catch(Exception e){}
          ??}
          ???if(key == true)
          ???{
          ????//new Thread(new draw_table()).start();
          ????//key = false;
          ????//new Zidan_thread().start();
          ????k = 0;
          ????zidan();
          ???}
          ???repaint();
          ?}
          ?public void zidan()
          ?{
          ??Graphics g = getGraphics();
          ??g.setColor(Color.yellow);
          ??g.fillRect(zx, zy, 10, 10);
          ??if(key_fangxiang == 1)
          ??{
          ???zx+=10;
          ??}
          ??if(key_fangxiang == 2)
          ??{
          ???zy+=10;
          ??}
          ??if(key_fangxiang == 3)
          ??{
          ???zx-=10;
          ??}
          ??if(key_fangxiang == 4)
          ??{
          ???zy-=10;
          ??}
          ??try{Thread.sleep(200);}catch(Exception e){}
          ?}
          ?//public void run()
          ?//{
          ?//?zidan();
          ?//}
          }
          //面板類定義
          class Mypanel extends JPanel
          {
          ?public Insets insets()
          ?{
          ??return new Insets(60,10,200,10);
          ?}
          }



          歡迎來訪!^.^!
          本BLOG僅用于個人學習交流!
          目的在于記錄個人成長.
          所有文字均屬于個人理解.
          如有錯誤,望多多指教!不勝感激!

          Feedback

          # re: 坦克游戲——實現坦克的移動和子彈的發射  回復  更多評論   

          2006-09-08 10:22 by songwenyuan
          大哥
          MIDlet類呢
          你有繼承嗎

          # re: 坦克游戲——實現坦克的移動和子彈的發射  回復  更多評論   

          2006-09-09 11:28 by 久城
          MIDlet類?..這是我的一個javatest,還沒有更深的理解,MIDlet類是做什么的?在API中怎么查不到?...

          # re: 坦克游戲——實現坦克的移動和子彈的發射  回復  更多評論   

          2006-10-12 00:48 by 黑蝙蝠
          樓上的樓上的大哥 midlet是j2me中的類 做單機沒用到midlet類

          # re: 坦克游戲——實現坦克的移動和子彈的發射  回復  更多評論   

          2008-06-08 14:05 by aaaa
          J2ME就是JAVA手機游戲開發編程,MIDLET類是J2ME的主類(入口類),你寫的代碼太亂,沒條理,需要看很久才能明白是什么作用。做程序員寫代碼是給別人看的,你的變量還有格式就必須清晰明了,如果你寫個代碼你的頭頭看半天才看懂,估計你得挨頓批了~~~你中間有必要每寫個方向就繪制一次嗎?你不會用數組嗎?本來10幾行代碼搞定,你寫了幾十行,浪費了資源。我敢肯定你還沒學過編程環境吧,連入口和使用哪種手機都自己寫,太神奇了??!~~

          # re: 坦克游戲——實現坦克的移動和子彈的發射  回復  更多評論   

          2008-09-09 20:34 by dsfs
          MIDlet類?..這是我的一個javatest,還沒有更深的理解,MIDlet類是做什么的?在API中怎么查不到?...

          I 服了 you

          Copyright © 久城

          主站蜘蛛池模板: 连南| 遂溪县| 伊宁县| 南汇区| 延边| 贡山| 商丘市| 竹山县| 禄劝| 江津市| 隆德县| 靖远县| 洪雅县| 林芝县| 平昌县| 绩溪县| 梅河口市| 凤山市| 栖霞市| 台中市| 丰城市| 新闻| 沾化县| 克什克腾旗| 禹州市| 江华| 红桥区| 旌德县| 全南县| 姚安县| 元朗区| 化隆| 怀安县| 滦南县| 丹阳市| 凤山市| 九寨沟县| 淮滨县| 杭锦后旗| 阳高县| 阿勒泰市|