|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
由于本人吧,比较懒。
毕竟周一到周五都早9晚9的上班,加班。
有时周末都加班,所以好不容易周末了,懒得自己再敲代码。
所以就从网上找到了一些游戏代码。但是我给大家讲解详细的代码解析,解释。
关键能让大家学到东西。基于Java Swing的东西,我已经2年没写了,借此机会,我也回顾一下。
希望大家喜欢!
飞机游戏效果图
- [hide]package mscClassRoomEdit.com.msc.one.core;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import javax.swing.ImageIcon;
- import javax.swing.JPanel;
- public class PlanesOne {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- /**
- * FishC springwindyike 冒圣春
- * 由于本人吧,比较懒。
- * 毕竟周一到周五都早9晚9的上班,加班。
- * 有时周末都加班,所以懒得自己再敲代码
- * 所以就从网上找到了一些游戏代码
- * 但是我给大家讲解详细的代码解析,解释
- * 关键能让大家学到东西。
- * 基于Java Swing的东西,我已经2年没接触了
- * 借此机会,我也回顾一下
- */
- //这边创建了一个界面
- Frame w = new Frame("FishC游戏系列-打飞机源码分析-springwindyike-冒圣春");
- w.setSize(800, 1000);
- //创建一个面板
- MyPane mp = new MyPane();
- //添加一个面板
- w.add(mp);
- //这边添加键盘侦听器
- w.addKeyListener(mp);
- mp.addKeyListener(mp);
- Thread t = new Thread(mp);
- t.start();
- w.show();
- }
- }
- class MyPane extends JPanel implements Runnable, KeyListener {
- int count = 1000;// 发射子弹的数目
- int flag1 = 0;// 标志flag为1时发射子弹
- int m = 0; // 记录已发射子弹的数目
- int max = 2000;// 记录得分
- int x = 400;// 下面飞机的坐标
- int y = 900;
- int x1[] = new int[15];// 上面飞机的坐标
- int[] y1 = new int[15];
- int x2[] = new int[count];// 发射子弹的坐标
- int[] y2 = new int[count];
- public MyPane() {// 上面飞机随即分布
- for (int i = 0; i < 15; i++) {
- x1[i] = (int) (Math.random() * 780);
- y1[i] = (int) (Math.random() * 100);
- }
- }
- /**
- * Graphics 这个参数呢,是画笔,要想画图形,传它就行
- */
- public void paint(Graphics g) {
- super.paint(g);
- //这边无非就是在画飞机了!
- Image img2 = new ImageIcon("1.jpg").getImage();
- g.drawImage(img2, 0, 0, 800, 1000, null);
- Image img1 = new ImageIcon("2.png").getImage();// 画下面的飞机
- g.drawImage(img1, x, y, 30, 40, null);
- if (max > 0) {
- Font f = new Font("", Font.BOLD, 16);
- g.setFont(f);
- g.setColor(Color.RED);
- g.drawString("成绩是:" + max, 20, 20);
- for (int i = 0; i < 10; i++) {
- Image img3 = new ImageIcon("4.png").getImage();// 画上面的飞机
- g.drawImage(img3, x1[i], y1[i], 30, 40, null);
- }
- if (m == count)
- m = 0;
- if (flag1 == 1) {// 画新子弹的位置
- x2[m] = x;
- y2[m] = y;
- m++;
- flag1 = 0;
- }
- for (int i = 0; i < m; i++) {
- g.setColor(Color.RED);
- g.fillOval(x2[i] + 5, y2[i], 15, 15);
- }
- } else {
- Font ff = new Font("", Font.BOLD, 36);
- g.setFont(ff);
- g.setColor(Color.RED);
- g.drawString("GAME OVER", 100, 200);
- }
- }
- public void run() {
- while (true) {
- for (int i = 0; i < 10; i++) {// 飞机随机下落
- y1[i]++;
- if (y1[i] > 950) {
- y1[i] = 0;
- x1[i] = (int) (Math.random() * 780);
- max -= 50;
- }
- }
- for (int j = 0; j < m; j++) {// 子弹移动的过程
- y2[j] -= 10;
- }
- for (int i = 0; i < m; i++) { // 子弹击中飞机的过程
- if (y2[i] > 0) {
- for (int j = 0; j < 10; j++) {
- if (0 <= (y2[i] - y1[j]) && (y2[i] - y1[j]) <= 10) {
- if (-15 <= (x2[i] - x1[j]) && (x2[i] - x1[j]) <= 10) {
- max += 10;
- y2[i] = -1;
- x1[j] = (int) (Math.random() * 780);
- y1[j] = 0;
- }
- }
- }
- }
- }
- if (max < 0) {
- return;
- }
- try {
- Thread.sleep(35);
- } catch (Exception e) {
- }
- repaint();
- }
- }
- public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub
- }
- //键盘侦听程序了
- public void keyPressed(KeyEvent e) {// 控制下面飞机移动
- if (e.getKeyCode() == KeyEvent.VK_LEFT) {
- x -= 10;
- if (x < 0) {
- x = 0;
- }
- }
- if (e.getKeyCode() == KeyEvent.VK_UP) {
- y -= 10;
- if (y < 0) {
- y = 0;
- }
- }
- if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
- x += 10;
- if (x > 780) {
- x = 780;
- }
- }
- if (e.getKeyCode() == KeyEvent.VK_DOWN) {
- y += 10;
- if (y > 980) {
- y = 980;
- }
- }
- repaint();
- if (e.getKeyCode() == KeyEvent.VK_SPACE) {
- flag1 = 1;
- }
- }
- public void keyReleased(KeyEvent e) {
- // TODO Auto-generated method stub
- }
- }
复制代码 [/hide]
|
评分
-
参与人数 3 | 荣誉 +19 |
鱼币 +19 |
贡献 +13 |
收起
理由
|
小甲鱼
| + 8 |
+ 8 |
+ 5 |
大众所喜闻乐见的游戏~ |
大黑鱼
| + 6 |
+ 6 |
+ 5 |
支持楼主! |
拈花小仙
| + 5 |
+ 5 |
+ 3 |
感谢楼主无私奉献! |
查看全部评分
|