(游戏)打飞机01:前言  传送门

(游戏)打飞机02:游戏背景滚动  传送门

(游戏)打飞机03:控制玩家飞机   传送门

(游戏)打飞机04:绘画敌机、添加子弹    传送门

(游戏)打飞机05:处理子弹,击中敌机,添加计分板   传送门

(游戏)打飞机06:后续  传送门

绘画敌机、添加子弹效果

package com.example.administrator.myapplication;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** Created by Administrator on 2018/8/9.*/public class dafeijiGameView extends SurfaceView implementsSurfaceHolder.Callback,Runnable,android.view.View.OnTouchListener{private Bitmap my;//自己private Bitmap baozha;//爆炸private Bitmap bg;//背景private Bitmap diren;//敌人private Bitmap zidan;//子弹private Bitmap erjihuancun;//二级缓存private WindowManager windowManager;//获得界面长宽高private int display_w;  //界面的宽private int display_h;  //界面的高private ArrayList<GameImage> gameImage = new ArrayList();private ArrayList<Zidan> zidans = new ArrayList<Zidan>();public dafeijiGameView(Context context) {super(context);getHolder().addCallback(this);//事件注册this.setOnTouchListener(this);}private void init(){//加载照片my= BitmapFactory.decodeResource(getResources(),R.drawable.my);baozha= BitmapFactory.decodeResource(getResources(),R.drawable.baozha);bg= BitmapFactory.decodeResource(getResources(),R.drawable.bg);diren= BitmapFactory.decodeResource(getResources(),R.drawable.diren);zidan= BitmapFactory.decodeResource(getResources(),R.drawable.zidan);erjihuancun=Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);gameImage.add(new BeijingImage(bg));    //先加入背景照片gameImage.add(new FeijiImage(my));gameImage.add(new DijiImage(diren));}FeijiImage selectfeiji;@Overridepublic boolean onTouch(View v, MotionEvent event) {//手接近屏幕产生的事件if(event.getAction()==MotionEvent.ACTION_DOWN){for(GameImage game: gameImage){if(game instanceof FeijiImage){FeijiImage feiji = (FeijiImage)game;//判断条件为真时选中飞机if(feiji.getX()<event.getX()&&feiji.getY()<event.getY()&&feiji.getX()+feiji.getWidth()>event.getX() &&feiji.getY()+feiji.getHeigth()>event.getY()){selectfeiji=feiji;}else{selectfeiji=null;}break;}}}else if(event.getAction()==MotionEvent.ACTION_MOVE){//移动鼠标if( selectfeiji!=null){selectfeiji.setX((int)event.getX()-selectfeiji.getWidth()/2);selectfeiji.setY((int)event.getY()-selectfeiji.getHeigth()/2);}}else if(event.getAction()==MotionEvent.ACTION_UP){//松开鼠标selectfeiji=null;}return true;}private interface GameImage{public Bitmap getBitmap();public int getX();public int getY();}private class Zidan implements GameImage{Bitmap zidan;private FeijiImage feiji;private int x;private int y;public Zidan(FeijiImage feiji,Bitmap zidan){this.feiji=feiji;this.zidan=zidan;x=(feiji.getX()+feiji.getWidth()/2)-25;//居中位置y=feiji.getY()-zidan.getHeight();}public Bitmap getBitmap() {y-=19;if(y<=-10){zidans.remove(this);}return zidan;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}}private class DijiImage implements GameImage{private Bitmap diren = null;private List<Bitmap> bitmaps = new ArrayList<Bitmap>();private int x;private int y;public DijiImage(Bitmap diren){this.diren=diren;bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));y=-diren.getHeight();Random ran = new Random();x=ran.nextInt(display_w-(diren.getWidth()/4));}private int index=0;private int num =0;@Overridepublic Bitmap getBitmap() {Bitmap bitmap = bitmaps.get(index);//控制切换四个飞机的频率if(num == 7){index++;if(index == bitmaps.size()){index=0;}num=0;}y+=3;num++;if(y>display_h){gameImage.remove(this);}return bitmap;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}}private class FeijiImage implements GameImage{private Bitmap my;private int x;private int y;private int width;private int heigth;private int getWidth(){return width;}private int getHeigth(){return heigth;}private List<Bitmap> bitmaps = new ArrayList<Bitmap>();private  FeijiImage(Bitmap my){this.my=my;bitmaps.add(Bitmap.createBitmap(my,0,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4),0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*2,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*3,0,my.getWidth()/4,my.getHeight()));//得到战机的高和宽width=my.getWidth()/4;heigth=my.getHeight();x=(display_w - my.getWidth()/4)/2;y=display_h-my.getHeight()-30;}private int index=0;private int num =0;@Overridepublic Bitmap getBitmap() {Bitmap bitmap = bitmaps.get(index);//控制切换四个飞机的频率if(num == 7){index++;if(index == bitmaps.size()){index=0;}num=0;}num++;return bitmap;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}public void setY(int y){this.y=y;}public void setX(int x){this.x=x;}}//负责背景照片的处理private class BeijingImage implements GameImage{private Bitmap bg;private BeijingImage(Bitmap bg){this.bg=bg;newBitmap = Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);}private Bitmap newBitmap = null;private int height = 0;public Bitmap getBitmap(){Paint p = new Paint();Canvas canvas = new Canvas(newBitmap);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,height,display_w,display_h+height),p);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,-display_h+height,display_w,height),p);height++;if(height==display_h){height=0;}return newBitmap;}public int getX(){return 0;}public int getY(){return 0;}}private boolean state = false;private SurfaceHolder holder;//绘画中心public void run() {Paint p1 = new Paint();int diren_num=0;//
        int zidan_num=0;try{while(state){if(selectfeiji!=null){if(zidan_num==10){zidans.add(new Zidan(selectfeiji,zidan));zidan_num=0;}zidan_num++;}Canvas newCanvas = new Canvas(erjihuancun);for(GameImage image:(List<GameImage>)gameImage.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}for(GameImage image:(List<GameImage>)zidans.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}if(diren_num==150){diren_num=0;gameImage.add(new DijiImage(diren));}diren_num++;Canvas canvas = holder.lockCanvas();canvas.drawBitmap(erjihuancun,0,0,p1);holder.unlockCanvasAndPost(canvas);Thread.sleep(10);}}catch(Exception e){}}@Overridepublic void surfaceCreated(SurfaceHolder holder) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {state = false;}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {//得到屏幕的宽和高display_w=width;display_h=height;init();this.holder=holder;state = true;new Thread(this).start();}}

dafeijiGameView.java

package com.example.administrator.myapplication;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;public class MainActivity extends AppCompatActivity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//去掉标题// requestWindowFeature(Window.FEATURE_NO_TITLE);dafeijiGameView view =  new dafeijiGameView(this);setContentView(view);}}

MainActivity.java

实现过程

  绘制敌机

   private class DijiImage implements GameImage{private Bitmap diren = null;private List<Bitmap> bitmaps = new ArrayList<Bitmap>();private int x;private int y;public DijiImage(Bitmap diren){this.diren=diren;bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));y=-diren.getHeight();Random ran = new Random();x=ran.nextInt(display_w-(diren.getWidth()/4));}private int index=0;private int num =0;@Overridepublic Bitmap getBitmap() {Bitmap bitmap = bitmaps.get(index);//控制切换四个飞机的频率if(num == 7){index++;if(index == bitmaps.size()){index=0;}num=0;}y+=3;num++;if(y>display_h){gameImage.remove(this);}return bitmap;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}}

DijiImage.java

  初始化游戏时候加载敌机类

    private void init(){//加载照片my= BitmapFactory.decodeResource(getResources(),R.drawable.my);baozha= BitmapFactory.decodeResource(getResources(),R.drawable.baozha);bg= BitmapFactory.decodeResource(getResources(),R.drawable.bg);diren= BitmapFactory.decodeResource(getResources(),R.drawable.diren);zidan= BitmapFactory.decodeResource(getResources(),R.drawable.zidan);erjihuancun=Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);gameImage.add(new BeijingImage(bg));    //先加入背景照片gameImage.add(new FeijiImage(my));gameImage.add(new DijiImage(diren));}

  绘制敌机飞行动画

private List<Bitmap> bitmaps = new ArrayList<Bitmap>();

  将四张敌机加入链表

       bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
  从原始位图剪切图像,这是一种高级的方式。可以用Matrix(矩阵)来实现旋转等高级方式截图
  

参数说明:  传送门
    Bitmap source:要从中截图的原始位图
    int x:起始x坐标
    int y:起始y坐标
    int width:要截的图的宽度
    int height:要截的图的宽度
    Bitmap.Config  config:一个枚举类型的配置,可以定义截到的新位图的质量

  返回值:返回一个剪切好的Bitmap 
  绘制飞机飞行动画(不断切换四张图片,看起来像飞机飞)
 private int index=0;private int num =0;@Overridepublic Bitmap getBitmap() {Bitmap bitmap = bitmaps.get(index);//控制切换四个飞机的频率if(num == 7){index++;if(index == bitmaps.size()){index=0;}num=0;}//y+=3控制敌机下降速度y+=3;        

  随机位置生成敌机

            y=-diren.getHeight();Random ran = new Random();x=ran.nextInt(display_w-(diren.getWidth()/4));

  在游戏绘画中心中添加敌机出现

//绘画中心public void run() {Paint p1 = new Paint();int diren_num=0;//
        try{while(true){Canvas newCanvas = new Canvas(erjihuancun);for(GameImage image:(List<GameImage>)gameImage.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}if(diren_num==150){diren_num=0;gameImage.add(new DijiImage(diren));}diren_num++;Canvas canvas = holder.lockCanvas();canvas.drawBitmap(erjihuancun,0,0,p1);holder.unlockCanvasAndPost(canvas);Thread.sleep(10);}}catch(Exception e){}}

  敌机出现频率

                if(diren_num==150){diren_num=0;gameImage.add(new DijiImage(diren));}diren_num++;

package com.example.administrator.myapplication;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** Created by Administrator on 2018/8/9.*/public class dafeijiGameView extends SurfaceView implementsSurfaceHolder.Callback,Runnable,android.view.View.OnTouchListener{private Bitmap my;//自己private Bitmap baozha;//爆炸private Bitmap bg;//背景private Bitmap diren;//敌人private Bitmap zidan;//子弹private Bitmap erjihuancun;//二级缓存private WindowManager windowManager;//获得界面长宽高private int display_w;  //界面的宽private int display_h;  //界面的高private ArrayList<GameImage> gameImage = new ArrayList();public dafeijiGameView(Context context) {super(context);getHolder().addCallback(this);//事件注册this.setOnTouchListener(this);}private void init(){//加载照片my= BitmapFactory.decodeResource(getResources(),R.drawable.my);baozha= BitmapFactory.decodeResource(getResources(),R.drawable.baozha);bg= BitmapFactory.decodeResource(getResources(),R.drawable.bg);diren= BitmapFactory.decodeResource(getResources(),R.drawable.diren);zidan= BitmapFactory.decodeResource(getResources(),R.drawable.zidan);erjihuancun=Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);gameImage.add(new BeijingImage(bg));    //先加入背景照片gameImage.add(new FeijiImage(my));gameImage.add(new DijiImage(diren));}FeijiImage selectfeiji;@Overridepublic boolean onTouch(View v, MotionEvent event) {//手接近屏幕产生的事件if(event.getAction()==MotionEvent.ACTION_DOWN){for(GameImage game: gameImage){if(game instanceof FeijiImage){FeijiImage feiji = (FeijiImage)game;//判断条件为真时选中飞机if(feiji.getX()<event.getX()&&feiji.getY()<event.getY()&&feiji.getX()+feiji.getWidth()>event.getX() &&feiji.getY()+feiji.getHeigth()>event.getY()){selectfeiji=feiji;}else{selectfeiji=null;}break;}}}else if(event.getAction()==MotionEvent.ACTION_MOVE){//移动鼠标if( selectfeiji!=null){selectfeiji.setX((int)event.getX()-selectfeiji.getWidth()/2);selectfeiji.setY((int)event.getY()-selectfeiji.getHeigth()/2);}}else if(event.getAction()==MotionEvent.ACTION_UP){//松开鼠标selectfeiji=null;}return true;}private interface GameImage{public Bitmap getBitmap();public int getX();public int getY();}private class DijiImage implements GameImage{private Bitmap diren = null;private List<Bitmap> bitmaps = new ArrayList<Bitmap>();private int x;private int y;public DijiImage(Bitmap diren){this.diren=diren;bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));y=-diren.getHeight();Random ran = new Random();x=ran.nextInt(display_w-(diren.getWidth()/4));}private int index=0;private int num =0;@Overridepublic Bitmap getBitmap() {Bitmap bitmap = bitmaps.get(index);//控制切换四个飞机的频率if(num == 7){index++;if(index == bitmaps.size()){index=0;}num=0;}y+=3;num++;if(y>display_h){gameImage.remove(this);}return bitmap;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}}private class FeijiImage implements GameImage{private Bitmap my;private int x;private int y;private int width;private int heigth;private int getWidth(){return width;}private int getHeigth(){return heigth;}private List<Bitmap> bitmaps = new ArrayList<Bitmap>();private  FeijiImage(Bitmap my){this.my=my;bitmaps.add(Bitmap.createBitmap(my,0,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4),0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*2,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*3,0,my.getWidth()/4,my.getHeight()));//得到战机的高和宽width=my.getWidth()/4;heigth=my.getHeight();x=(display_w - my.getWidth()/4)/2;y=display_h-my.getHeight()-30;}private int index=0;private int num =0;@Overridepublic Bitmap getBitmap() {Bitmap bitmap = bitmaps.get(index);//控制切换四个飞机的频率if(num == 7){index++;if(index == bitmaps.size()){index=0;}num=0;}num++;return bitmap;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}public void setY(int y){this.y=y;}public void setX(int x){this.x=x;}}//负责背景照片的处理private class BeijingImage implements GameImage{private Bitmap bg;private BeijingImage(Bitmap bg){this.bg=bg;newBitmap = Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);}private Bitmap newBitmap = null;private int height = 0;public Bitmap getBitmap(){Paint p = new Paint();Canvas canvas = new Canvas(newBitmap);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,height,display_w,display_h+height),p);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,-display_h+height,display_w,height),p);height++;if(height==display_h){height=0;}return newBitmap;}public int getX(){return 0;}public int getY(){return 0;}}private boolean state = false;private SurfaceHolder holder;//绘画中心public void run() {Paint p1 = new Paint();int diren_num=0;//
        try{while(true){Canvas newCanvas = new Canvas(erjihuancun);for(GameImage image:(List<GameImage>)gameImage.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}if(diren_num==150){diren_num=0;gameImage.add(new DijiImage(diren));}diren_num++;Canvas canvas = holder.lockCanvas();canvas.drawBitmap(erjihuancun,0,0,p1);holder.unlockCanvasAndPost(canvas);Thread.sleep(10);}}catch(Exception e){}}@Overridepublic void surfaceCreated(SurfaceHolder holder) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {state = false;}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {//得到屏幕的宽和高display_w=width;display_h=height;init();this.holder=holder;state = true;new Thread(this).start();}}

dafeijiGameView

游戏中添加子弹

 private class Zidan implements GameImage{Bitmap zidan;private FeijiImage feiji;private int x;private int y;public Zidan(FeijiImage feiji,Bitmap zidan){this.feiji=feiji;this.zidan=zidan;x=(feiji.getX()+feiji.getWidth()/2)-25;//居中位置y=feiji.getY()-zidan.getHeight();}public Bitmap getBitmap() {y-=19;if(y<=-10){zidans.remove(this);}return zidan;}@Overridepublic int getX() {return x;}@Overridepublic int getY() {return y;}}

zidan.class

  判断子弹出现飞机位置

        public Zidan(FeijiImage feiji,Bitmap zidan){this.feiji=feiji;this.zidan=zidan;x=(feiji.getX()+feiji.getWidth()/2)-25;//居中位置y=feiji.getY()-zidan.getHeight();}

  (-25是自己微调)

  子弹超出边界的时候释放子弹内存,减少手机开销

        public Bitmap getBitmap() {y-=19;if(y<=-10){zidans.remove(this);}return zidan;}

  不断的出现新的子弹

                if(selectfeiji!=null){if(zidan_num==10){zidans.add(new Zidan(selectfeiji,zidan));zidan_num=0;}zidan_num++;}

  便利所有的子弹

                for(GameImage image:(List<GameImage>)zidans.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}

转载于:https://www.cnblogs.com/1138720556Gary/p/9457052.html

Android_(游戏)打飞机04:绘画敌机、添加子弹相关推荐

  1. Android_(游戏)打飞机01:前言

    (游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹   传送门 (游戏)打飞机05:处理子弹, ...

  2. Java Swing 经典小游戏《飞机大战》———— (一)获取素材,创建窗口,添加滚动背景,双缓冲

    (一)最终效果 1.窗口 2.项目框架 (二)效果实现 1.获取素材 获取步骤省略,大家可自行到我的资源获取,放置在src目录下 2. 创建窗口 WinGame.java import java.aw ...

  3. Java飞机大战敌机消失_Shoot 飞机大战,功能是子弹打在敌机上, 消失 且在内存中 , 小蜜蜂上同理 Games 游戏 247万源代码下载- www.pudn.com...

    文件名称: Shoot下载  收藏√  [ 5  4  3  2  1 ] 所属分类: Games 开发工具: Java 文件大小: 371 KB 上传时间: 2015-12-01 下载次数: 0 提 ...

  4. QT飞机大战六(敌机血条的添加以及特殊子弹道具)

    可能有点丑但其实是没有好的资源图片 比如这个血条太生硬了,这个子弹道具怎么真的就和子弹一样?? 不过没事,功能对了就行 首先考虑这个血条怎么搞. 那么首先我们的敌机需要有个属性sum_hp(总血量), ...

  5. Swing游戏开发——飞机大战

    本章讲解利用javax.swing包下的Swing技术来开发一个飞机大战. 完整源码:https://download.csdn.net/download/JavaFanHuman/12713192 ...

  6. Python小游戏之 - 飞机大战 !

    用Python写的"飞机大战"小游戏 源代码如下: # coding=utf-8 import random import os import pygame# 用一个常量来存储屏幕 ...

  7. (七)通过pygame来设置飞机大战中 敌机 的速度、位置等

    python飞机大战系列文章(按顺序) (一)通过pygame 将自己的图像添加到游戏中 (二)通过pygame让游戏人物 动起来 (三)通过pygame处理用户的鼠标键盘操作(事件和监听 (四)详解 ...

  8. 【游戏程序设计】完整二维游戏开发-飞机大战

    学习了前面的许多知识,现在可以真正做个可以玩的游戏了. 之前是用MFC做的飞机大战,但是有许多的问题.这次我们用Win32程序来开发,所有的代码都是自己写成的,可以控制更多的细节.这次的游戏就没有之前 ...

  9. python小游戏代码大全打枪-python实现微信小游戏打飞机代码

    以前版本的微信小游戏有一个打飞机的游戏,学完python之后我试着写了下程序去基本实现打飞机的功能,下面是小游戏打飞机的python代码 注:python中部分代码转自crossin编程教室 impo ...

最新文章

  1. 【微服务】Spring-Boot整合Consul (自定义服务配置及健康检查)
  2. SAP Table Relationship of Material Classification
  3. elasticsearch插件(4)
  4. armv8/armv7中SCTLR的区别
  5. RGB CMYK HSV LAB
  6. 大小端、位段(惑位域)和内存对齐
  7. 如何快速入手一个JavaWeb项目
  8. c语言课程设计做科普,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  9. linux如何安装yum
  10. 电子商务师四级证书理论题库
  11. dmx512协议的编程c语言,我在此分享一份DMX512协议的发送程序,希望对做灯光控制的人有一定的帮助(我测试过了跟DMX512控制台发出的方波是一样一样的)...
  12. 解决夜神模拟器设置了代理后无法上网
  13. 大学转计算机专业申请理由,大学转专业申请书
  14. ios弱网测试_iOS模拟弱网测试
  15. 七年级上册计算机工作计划,七年级上册班主任工作计划
  16. 可验证随机函数(Verifiable Random Function, VRF)
  17. E哥的Git教程(一)
  18. Unity3D怪物基本AI
  19. Liunx下Intel无线网卡驱动安装
  20. 2015年第四届C/C++ A组蓝桥杯省赛真题

热门文章

  1. Linux中的15个‘echo’ 命令实例
  2. 关于C语言中的'\?'和%%
  3. C# NTP时间同步类
  4. Confluence 6 考虑使用自定义 CSS
  5. Java最大公约数和最小公倍数的求法(辗转相除法)
  6. 每天十分钟系列:JS数据操作之神奇的map()
  7. Node.js 国产 MVC 框架 ThinkJS 开发 config 篇
  8. 使用递归算法结合数据库解析成java树形结构
  9. windows服务器的DDOS防御,
  10. [转载]PHP 计算时间差