鱼C论坛

 找回密码
 立即注册
查看: 29558|回复: 241

[技术交流] FishC游戏系列-打飞机源码分析

  [复制链接]
发表于 2014-11-29 14:11:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
由于本人吧,比较懒。
毕竟周一到周五都早9晚9的上班,加班。
有时周末都加班,所以好不容易周末了,懒得自己再敲代码。
所以就从网上找到了一些游戏代码。但是我给大家讲解详细的代码解析,解释。
关键能让大家学到东西。基于Java Swing的东西,我已经2年没写了,借此机会,我也回顾一下。

希望大家喜欢!


飞机游戏效果图

飞机游戏效果图







  1. [hide]package mscClassRoomEdit.com.msc.one.core;

  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Frame;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.event.KeyEvent;
  8. import java.awt.event.KeyListener;

  9. import javax.swing.ImageIcon;
  10. import javax.swing.JPanel;

  11. public class PlanesOne {

  12.         public static void main(String[] args) {
  13.                 // TODO Auto-generated method stub
  14.                 /**
  15.                  * FishC  springwindyike   冒圣春
  16.                  * 由于本人吧,比较懒。
  17.                  * 毕竟周一到周五都早9晚9的上班,加班。
  18.                  * 有时周末都加班,所以懒得自己再敲代码
  19.                  * 所以就从网上找到了一些游戏代码
  20.                  * 但是我给大家讲解详细的代码解析,解释
  21.                  * 关键能让大家学到东西。
  22.                  * 基于Java Swing的东西,我已经2年没接触了
  23.                  * 借此机会,我也回顾一下
  24.                  */
  25.                 //这边创建了一个界面
  26.                 Frame w = new Frame("FishC游戏系列-打飞机源码分析-springwindyike-冒圣春");
  27.                 w.setSize(800, 1000);
  28.                 //创建一个面板
  29.                 MyPane mp = new MyPane();
  30.                 //添加一个面板
  31.                 w.add(mp);
  32.                 //这边添加键盘侦听器
  33.                 w.addKeyListener(mp);
  34.                 mp.addKeyListener(mp);
  35.                 Thread t = new Thread(mp);
  36.                 t.start();
  37.                 w.show();
  38.         }
  39. }

  40. class MyPane extends JPanel implements Runnable, KeyListener {
  41.         int count = 1000;// 发射子弹的数目
  42.         int flag1 = 0;// 标志flag为1时发射子弹
  43.         int m = 0; // 记录已发射子弹的数目
  44.         int max = 2000;// 记录得分
  45.         int x = 400;// 下面飞机的坐标
  46.         int y = 900;
  47.         int x1[] = new int[15];// 上面飞机的坐标
  48.         int[] y1 = new int[15];
  49.         int x2[] = new int[count];// 发射子弹的坐标
  50.         int[] y2 = new int[count];

  51.         public MyPane() {// 上面飞机随即分布
  52.                 for (int i = 0; i < 15; i++) {
  53.                         x1[i] = (int) (Math.random() * 780);
  54.                         y1[i] = (int) (Math.random() * 100);
  55.                 }
  56.         }

  57.         /**
  58.          * Graphics 这个参数呢,是画笔,要想画图形,传它就行
  59.          */
  60.         public void paint(Graphics g) {
  61.                 super.paint(g);
  62.                 //这边无非就是在画飞机了!
  63.                 Image img2 = new ImageIcon("1.jpg").getImage();
  64.                 g.drawImage(img2, 0, 0, 800, 1000, null);
  65.                 Image img1 = new ImageIcon("2.png").getImage();// 画下面的飞机
  66.                 g.drawImage(img1, x, y, 30, 40, null);
  67.                 if (max > 0) {
  68.                         Font f = new Font("", Font.BOLD, 16);
  69.                         g.setFont(f);
  70.                         g.setColor(Color.RED);
  71.                         g.drawString("成绩是:" + max, 20, 20);
  72.                         for (int i = 0; i < 10; i++) {
  73.                                 Image img3 = new ImageIcon("4.png").getImage();// 画上面的飞机
  74.                                 g.drawImage(img3, x1[i], y1[i], 30, 40, null);
  75.                         }
  76.                         if (m == count)
  77.                                 m = 0;
  78.                         if (flag1 == 1) {// 画新子弹的位置
  79.                                 x2[m] = x;
  80.                                 y2[m] = y;
  81.                                 m++;
  82.                                 flag1 = 0;
  83.                         }
  84.                         for (int i = 0; i < m; i++) {
  85.                                 g.setColor(Color.RED);
  86.                                 g.fillOval(x2[i] + 5, y2[i], 15, 15);
  87.                         }
  88.                 } else {
  89.                         Font ff = new Font("", Font.BOLD, 36);
  90.                         g.setFont(ff);
  91.                         g.setColor(Color.RED);
  92.                         g.drawString("GAME OVER", 100, 200);
  93.                 }
  94.         }

  95.         public void run() {
  96.                 while (true) {
  97.                         for (int i = 0; i < 10; i++) {// 飞机随机下落
  98.                                 y1[i]++;
  99.                                 if (y1[i] > 950) {
  100.                                         y1[i] = 0;
  101.                                         x1[i] = (int) (Math.random() * 780);
  102.                                         max -= 50;
  103.                                 }
  104.                         }
  105.                         for (int j = 0; j < m; j++) {// 子弹移动的过程
  106.                                 y2[j] -= 10;
  107.                         }
  108.                         for (int i = 0; i < m; i++) { // 子弹击中飞机的过程
  109.                                 if (y2[i] > 0) {
  110.                                         for (int j = 0; j < 10; j++) {
  111.                                                 if (0 <= (y2[i] - y1[j]) && (y2[i] - y1[j]) <= 10) {
  112.                                                         if (-15 <= (x2[i] - x1[j]) && (x2[i] - x1[j]) <= 10) {
  113.                                                                 max += 10;
  114.                                                                 y2[i] = -1;
  115.                                                                 x1[j] = (int) (Math.random() * 780);
  116.                                                                 y1[j] = 0;
  117.                                                         }
  118.                                                 }
  119.                                         }
  120.                                 }
  121.                         }
  122.                         if (max < 0) {
  123.                                 return;
  124.                         }
  125.                         try {
  126.                                 Thread.sleep(35);
  127.                         } catch (Exception e) {

  128.                         }

  129.                         repaint();
  130.                 }
  131.         }

  132.         public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub
  133.         }

  134.         //键盘侦听程序了
  135.         public void keyPressed(KeyEvent e) {// 控制下面飞机移动
  136.                 if (e.getKeyCode() == KeyEvent.VK_LEFT) {
  137.                         x -= 10;
  138.                         if (x < 0) {
  139.                                 x = 0;
  140.                         }
  141.                 }

  142.                 if (e.getKeyCode() == KeyEvent.VK_UP) {
  143.                         y -= 10;
  144.                         if (y < 0) {
  145.                                 y = 0;
  146.                         }

  147.                 }

  148.                 if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
  149.                         x += 10;
  150.                         if (x > 780) {
  151.                                 x = 780;
  152.                         }
  153.                 }
  154.                 if (e.getKeyCode() == KeyEvent.VK_DOWN) {
  155.                         y += 10;
  156.                         if (y > 980) {
  157.                                 y = 980;
  158.                         }
  159.                 }
  160.                 repaint();
  161.                 if (e.getKeyCode() == KeyEvent.VK_SPACE) {
  162.                         flag1 = 1;
  163.                 }
  164.         }

  165.         public void keyReleased(KeyEvent e) {
  166.                 // TODO Auto-generated method stub
  167.         }

  168. }
复制代码
[/hide]

评分

参与人数 3荣誉 +19 鱼币 +19 贡献 +13 收起 理由
小甲鱼 + 8 + 8 + 5 大众所喜闻乐见的游戏~
大黑鱼 + 6 + 6 + 5 支持楼主!
拈花小仙 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-29 14:35:34 | 显示全部楼层
打飞机:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 14:37:17 | 显示全部楼层

嗯啊!打飞机!:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 14:43:15 | 显示全部楼层
恩恩!不错!支持!加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 14:45:38 | 显示全部楼层
青玄 发表于 2014-11-29 14:43
恩恩!不错!支持!加油!

谢谢!:ton:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 14:47:31 | 显示全部楼层
支持!加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 15:13:09 | 显示全部楼层
辛苦了楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 15:21:34 | 显示全部楼层

谢谢!你们喜欢就好!有问题大家多交流!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 15:22:20 | 显示全部楼层

能认识大家就很高兴了!有问题大家多交流!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 15:43:43 | 显示全部楼层
springwindyike 发表于 2014-11-29 15:22
能认识大家就很高兴了!有问题大家多交流!

感谢楼主分享,代码的画使用 <> 代码格式才不会出错哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 15:48:27 | 显示全部楼层
虽然我是学c的,不过还是看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 16:00:02 | 显示全部楼层
小甲鱼的二师兄 发表于 2014-11-29 15:43
感谢楼主分享,代码的画使用  代码格式才不会出错哦~

嗯呢!这次没弄好!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 16:00:13 | 显示全部楼层
3021 发表于 2014-11-29 15:48
虽然我是学c的,不过还是看看吧

谢谢支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 16:17:16 | 显示全部楼层
1212
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-29 16:46:16 | 显示全部楼层
谢谢楼主局:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 16:48:20 | 显示全部楼层
支持了,谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 18:19:40 | 显示全部楼层
支持!加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-29 18:37:17 | 显示全部楼层
强烈支持版主,向版主致敬~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 19:29:30 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 19:30:48 | 显示全部楼层
小人 发表于 2014-11-29 16:48
支持了,谢谢分享

谢谢支持:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 15:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表