C++编写简易的飞机大战

初学C/C++的小伙伴可以用做这个小游戏来熟悉一下编程的乐趣。

#include<windows.h>
#include"resource.h"
#include<stdlib.h>
#include<time.h>
#include<stdio.h>

#define TIMER_DIREN 101      //定义定时器
#define TIMER_DIRENMOVE 102
#define TIMER_ZIDAN 103
#define TIMER_DIRENRELEASE 104

typedef struct Node    //敌人,自己,子弹结构体
{
  int x;
  int y;
  struct Node *pnext;
}DiRen,FeiJi,ZiDan;
void ZaoDiRen();                //造敌人
void ShowDiRen(DiRen *pHead,HWND hWnd);     //显示敌人
void ZaoZiDan();                //造子弹
void ShowZiDan(ZiDan *pHead,HWND hWnd);     //显示子弹
void DiRenMove(DiRen *pHead);          //敌人移动
void ZiDanMove(DiRen *pHead);          //子弹移动
void shoot(HWND hWnd,FeiJi *ziji,DiRen **diren,ZiDan **zidan);//判断是否射中
void ReleaseDiren(DiRen **pHead);        //释放出去的敌人
void ReleaseZidan(ZiDan **pHead);        //释放出去的子弹
void ZaoZiJi(HWND hWnd);            //造自己
LRESULT CALLBACK pp(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);//回调函数
int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
  WNDCLASSEX wc;
  HWND hWnd;
  MSG msg;
  wc.hInstance=hInstance;
  wc.cbClsExtra=0;
  wc.cbSize=sizeof(WNDCLASSEX);
  wc.cbWndExtra=0;
  wc.hIcon=NULL ;
  wc.hCursor=NULL ;
  wc.hIconSm=NULL;
  wc.lpfnWndProc=pp;
  wc.lpszClassName="hello";
  wc.lpszMenuName=NULL;
  wc.style=CS_HREDRAW|CS_VREDRAW | CS_OWNDC ;
  wc.hbrBackground=(HBRUSH)5;
  RegisterClassEx(&wc);
  hWnd=CreateWindow("hello","world", WS_OVERLAPPEDWINDOW,100,100,600,600,NULL,NULL,hInstance,NULL);
  ShowWindow(hWnd,nCmdShow);
  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return 0;
}
DiRen *pDiRen=NULL;  //敌人
ZiDan *pZiDan=NULL;  //子弹
FeiJi *pZiJi=NULL;   //自己
static int score=0;   //分数
static char sco[20];  //装分数的字符窜
LRESULT CALLBACK pp(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
  int i=1,  //位
    jscore;
  HDC hdc;
  HDC memdc;
  HBITMAP hbm;
  BITMAP bminfo;
  switch(msg)
  {
  case WM_TIMER:   //定时器
    hdc=GetDC(hWnd); //得到设备句柄
    hbm=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP4));//载入背景位图
    GetObject(hbm, sizeof(bminfo), &bminfo);
    memdc=CreateCompatibleDC(hdc);
    SelectObject(memdc,hbm);
    BitBlt(hdc,0,0,600,600,memdc,0,0,SRCCOPY);
    /*itoa(score,sco,10);*/
    sprintf(sco,"%d",score);  //将分数装入字符窜
    jscore=score;
    while((jscore=jscore/10)>0) //判断分数有几位
      i++;
    TextOut(hdc,0,0,"分数",4);
    TextOut(hdc,30,0,sco,i); //显示分数
    DeleteDC(memdc);
    ReleaseDC(hWnd,hdc);  //释放句柄
    DeleteObject(hbm);
    ZaoZiJi(hWnd);     //造自己
    if(TIMER_ZIDAN==wParam)  //定时器101
    {
      ZiDanMove(pZiDan);   //子弹移动
      ReleaseZidan(&pZiDan); //释放出屏幕的子弹
    }
    else if( TIMER_DIREN==wParam) //定时器102
    {
      ZaoDiRen();       //造敌人
    }
    else if(TIMER_DIRENRELEASE==wParam)  //定时器103
    {
      ReleaseDiren(&pDiRen);  //释放出屏幕的敌人
    }
    ShowDiRen(pDiRen,hWnd);       //显示敌人
    DiRenMove(pDiRen);       //敌人移动
    ShowZiDan(pZiDan,hWnd);     //显示子弹
    shoot(hWnd,pZiJi,&pDiRen,&pZiDan);   //是否射中
    break;
  case WM_CLOSE:    //关闭
    PostQuitMessage(0);
    break;
  case WM_KEYDOWN:    //判断按键
    switch(wParam)
    {
    case VK_LEFT:   //左移
      if(pZiJi->x>0)
        pZiJi->x-=20;
      break;
    case VK_RIGHT:  //右移
      if(pZiJi->x<530)
      pZiJi->x+=20;
      break;
    case VK_UP:   //上移
      if(pZiJi->y>0)
      pZiJi->y-=20;
      break;
    case VK_DOWN:  //下移
      if(pZiJi->y<520)
      pZiJi->y+=20;
      break;
    case VK_SPACE:  //空格发射子弹
      ZaoZiDan();
      break;
    }
    break;
  case WM_CREATE:   //创建
    srand(time(NULL));
    pZiJi=(struct Node*)malloc(sizeof(struct Node));
    pZiJi->x=200;     //自己的x
    pZiJi->y=500;     //自己的y
    SetTimer(hWnd,TIMER_DIREN,1000,NULL);  //设置定时器
    SetTimer(hWnd,TIMER_DIRENMOVE,200,NULL);
    SetTimer(hWnd,TIMER_ZIDAN,100,NULL);
    SetTimer(hWnd,TIMER_DIRENRELEASE,300,NULL);
    break;
  }
  return DefWindowProc(hWnd,msg,wParam,lParam);
}

void ZaoDiRen()  //造子弹
{
  DiRen *u;
  u=(struct Node*)malloc(sizeof(struct Node));
  u->x=rand()%550;   //子弹的x随机出现
  u->y=-10;      //出现的纵坐标固定
  u->pnext=NULL;
  if(NULL==pDiRen)
  {
    pDiRen=u;
  }
  else
  {
    u->pnext=pDiRen;   //将新产生的链表放在头
    pDiRen=u;

  }
}
void ShowDiRen(struct Node *pHead,HWND hWnd)  //显示敌人
{
  HDC hdc;
  HDC memdc;
  HBITMAP hbm;
  BITMAP bminfo;
  hdc=GetDC(hWnd);
  hbm=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));//载入敌人位图
  GetObject(hbm, sizeof(bminfo), &bminfo);
  memdc=CreateCompatibleDC(hdc);
  SelectObject(memdc,hbm);
  while(pHead!=NULL) //敌人链表不为空,显示敌机
  {
    BitBlt(hdc,pHead->x,pHead->y,40,40,memdc,0,0,SRCCOPY);
    pHead=pHead->pnext;
  }
  DeleteDC(memdc);
  ReleaseDC(hWnd,hdc);
  DeleteObject(hbm);
}
void ZaoZiJi(HWND hWnd)
{
  HDC hdc;
  HDC memdc;
  HBITMAP hbm;
  BITMAP bminfo;
  hdc=GetDC(hWnd);
  hbm=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP3));//载入自己的位图
  GetObject(hbm, sizeof(bminfo), &bminfo);
  memdc=CreateCompatibleDC(hdc);
  SelectObject(memdc,hbm);
  BitBlt(hdc,pZiJi->x,pZiJi->y,40,40,memdc,0,0,SRCCOPY); //显示自己
  DeleteDC(memdc);
  ReleaseDC(hWnd,hdc);
  DeleteObject(hbm);
}
void ZaoZiDan()   //造子弹
{
  ZiDan *u;
  u=(ZiDan*)malloc(sizeof(ZiDan));
  u->x=pZiJi->x+15;
  u->y=pZiJi->y+10;
  u->pnext=NULL;
  if(pZiDan==NULL)
  {
    pZiDan=u;
  }
  else
  {
    u->pnext=pZiDan;  //将子弹放在链表头
    pZiDan=u;
  }
}
void ShowZiDan(ZiDan *pHead,HWND hWnd) //显示子弹
{
  HDC hdc;
  HDC memdc;
  HBITMAP hbm;
  BITMAP bminfo;
  hdc=GetDC(hWnd);
  hbm=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2)); //插入子弹位图
  GetObject(hbm, sizeof(bminfo), &bminfo);
  memdc=CreateCompatibleDC(hdc);
  SelectObject(memdc,hbm);
  while(pHead!=NULL)  //子弹链表不为空,显示子弹
  {
    /*Ellipse(hdc,pHead->x,pHead->y,pHead->x+5,pHead->y+5);*/
    BitBlt(hdc,pHead->x,pHead->y,10,10,memdc,0,0,SRCCOPY);
    pHead=pHead->pnext;
  }
  DeleteDC(memdc);
  ReleaseDC(hWnd,hdc);
  DeleteObject(hbm);
}

void DiRenMove(DiRen *pHead)  //敌人移动
{
  while(pHead!=NULL)  //链表不为空,敌人移动
  {
    if(score<500)
    {
      pHead->y+=10;
      pHead=pHead->pnext;
    }
    else
    {
      pHead->y+=20;
      pHead=pHead->pnext;
    }
  }
}
void ZiDanMove(DiRen *pHead)  //子弹移动
{
  while(pHead!=NULL)  //链表不为空子弹移动
  {
    pHead->y-=20;
    pHead=pHead->pnext;
  }
}

void shoot(HWND hWnd,FeiJi *ziji,DiRen **diren,ZiDan **zidan) //判断是否中
{
  DiRen *js1=*diren;
  ZiDan *js2=*zidan;
  int n = 1;
  while(js1!=NULL) //判断自己是否撞机
  {
    //撞击释放定时器游戏结束
    if((ziji->x-js1->x<30&&ziji->x-js1->x>-38)&&(ziji->y-js1->y<25&&ziji->y-js1->y>-38))
    {
      KillTimer(hWnd,TIMER_DIREN);
      KillTimer(hWnd,TIMER_ZIDAN);
      KillTimer(hWnd,TIMER_DIRENMOVE);
      KillTimer(hWnd,TIMER_DIRENRELEASE);
      MessageBox(hWnd,"You Lose","窗口",MB_OK);
      PostQuitMessage(0);
      break;
    }
    else
      js1=js1->pnext;  //没有判断下一个敌机
  }
  js1=*diren;  //敌机回到头
  while((js1=*diren)!=NULL)  //判断敌人是否为空
  {
    zidan = &pZiDan;
    n = 0;
    while((js2=*zidan)!=NULL) //判断子弹是否为空
    {
      //敌机中弹
      if((js2->x - js1->x <= 40&&js2->x - js1->x>=-5)&&(js2->y - js1->y <= 40&&js2->y - js1->y>=-8))
      {
        score+=100;
        n = 1;
        *zidan = js2->pnext;
        if(js1->pnext!=NULL) //链表下节不为空,指向下一个释放中弹的飞机子弹
        {
          *diren = js1->pnext;
          diren = &pDiRen;
          free(js1);
          free(js2);
        }
        else
          *diren = NULL;
        break;
      }
      else
      {
        zidan = &js2->pnext;  //没中看下一个
      }
    }
    if(n != 1)  //判断是否是中弹出来的
    {
      diren = &js1->pnext;
    }
  }
}
void ReleaseDiren(DiRen **pHead) //释放飞出屏幕的敌人
{
  DiRen *js=*pHead;
  while((js=*pHead)!=NULL)
  {
    if(js->y>600)    //飞出屏幕释放
    {
      *pHead=js->pnext;
      free(js);
    }
    else
    {
      pHead = &js->pnext;  //看下一个
    }
  }
}
void ReleaseZidan(ZiDan **pHead)  //释放子弹
{
  ZiDan *js=*pHead;
  while((js=*pHead)!=NULL)
  {
    if(js->y<0)    //飞出的子弹释放
    {
      *pHead=js->pnext;
      free(js);
    }
    else
      pHead=&js->pnext;  //没飞出看下一个
  }
}

同时分享一个网友的方法

//mytestView.cpp:Cmytest;
//;
#include"stdafx.h;
#include"mytest.h;
#include"mytestDoc;
#include"mytestView;
#ifdef_DEBUG;
#definenewDEBUG_NEW;
#endif;//CmytestVie
// mytestView.cpp : CmytestView 类的实现
//
#include "stdafx.h"
#include "mytest.h"
#include "mytestDoc.h"
#include "mytestView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CmytestView
IMPLEMENT_DYNCREATE(CmytestView, CView)
BEGIN_MESSAGE_MAP(CmytestView, CView)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
// CmytestView 构造/析构
CmytestView::CmytestView()
{
// TODO: 在此处添加构造代码
m_x_me=0;
m_x_enemy=0;
m_y_enemyone=0;
m_y_enemytwo=0;
m_y_bomb=0;
m_x_bomb=0;
m_x_ball=0;
m_y_ball=0;
m_x_explsion=0;
}
CmytestView::~CmytestView()
{
}
BOOL CmytestView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
return CView::PreCreateWindow(cs);
}
// CmytestView 绘制
void CmytestView::OnDraw(CDC* pDC)
{
CmytestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
/*CBitmap bitmap;
bitmap.LoadBitmapW(IDB_ME);
*/
//画图
/*pDC->BitBlt(100,50,50,60,&MemDC,0,0,SRCCOPY);*/
/*POINT pt;
pt.x=200;
pt.y=200;
CImageList imageList;
imageList.Create(50,60,ILC_COLOR24|ILC_MASK,1,0);
imageList.Add(&bitmap,RGB(0,0,0));
imageList.Draw(pDC,0,pt,ILD_TRANSPARENT);
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&bitmap);*/
//RECT rc;
//GetClientRect(&rc);
//CBrush brush;
//brush.CreateSolidBrush(RGB(3,108,254));
//pDC->SelectObject(&brush);
//CBrush *oldbrush=pDC->SelectObject(&brush);
//pDC->Rectangle(&rc);
//pDC->SelectObject(oldbrush);
//CBitmap bitmap;
//bitmap.LoadBitmapW(IDB_ME);
//POINT pt;
//pt.x=200;
//pt.y=200;
//CImageList imageList;
//imageList.Create(60,50,ILC_COLOR24|ILC_MASK,1,0);
//imageList.Add(&bitmap,RGB(0,0,0));
//imageList.Draw(pDC,0,pt,ILD_TRANSPARENT);
// CDC MemDC;
//MemDC.CreateCompatibleDC(NULL);
//MemDC.SelectObject(&bitmap);
//刷新
RECT rc;
GetClientRect(&rc);
CBrush brush;
brush.CreateSolidBrush(RGB(3,108,254));
pDC->SelectObject(&brush);
CBrush *oldbrush=pDC->SelectObject(&brush);
pDC->Rectangle(&rc);
pDC->SelectObject(oldbrush);
//敌机
CBitmap bitmap1;
bitmap1.LoadBitmapW(IDB_enemy);
POINT pt1;
pt1.x=200;
pt1.y=m_y_enemyone;
POINT pt1_2;
pt1_2.x=300;
pt1_2.y=m_y_enemytwo;
CImageList imageList1;
imageList1.Create(35,35,ILC_COLOR24|ILC_MASK,1,0);
imageList1.Add(&bitmap1,RGB(0,0,0));
imageList1.Draw(pDC,0,pt1,ILD_TRANSPARENT);
imageList1.Draw(pDC,1,pt1_2,ILD_TRANSPARENT);
//战机
CBitmap bitmap2;
bitmap2.LoadBitmapW(IDB_ME);
POINT pt2;
pt2.x=m_x_me;
pt2.y=100;
CImageList imageList2;
imageList2.Create(50,60,ILC_COLOR24|ILC_MASK,1,0);
imageList2.Add(&bitmap2,RGB(0,0,0));
imageList2.Draw(pDC,0,pt2,ILD_TRANSPARENT);
//子弹
CBitmap bitmap3;
bitmap3.LoadBitmapW(IDB_ball);
POINT pt3;
pt3.x=150;
pt3.y=m_y_ball;
CImageList imageList3;
imageList3.Create(8,8,ILC_COLOR24|ILC_MASK,1,0);
imageList3.Add(&bitmap3,RGB(0,0,0));
imageList3.Draw(pDC,0,pt3,ILD_TRANSPARENT);
//炸弹
CBitmap bitmap4;
bitmap4.LoadBitmapW(IDB_bomb);
POINT pt4;
pt4.x=m_x_bomb;
pt4.y=250;
CImageList imageList4;
imageList4.Create(10,20,ILC_COLOR24|ILC_MASK,1,0);
imageList4.Add(&bitmap4,RGB(0,0,0));
imageList4.Draw(pDC,0,pt4,ILD_TRANSPARENT);
//爆炸
CBitmap bitmap5;
bitmap5.LoadBitmapW(IDB_explsion);
POINT pt5_1;
pt5_1.x=310;
pt5_1.y=310;
POINT pt5_2;
pt5_2.x=330;
pt5_2.y=330;
POINT pt5_3;
pt5_3.x=350;
pt5_3.y=450;
POINT pt5_4;
pt5_4.x=470;
pt5_4.y=470;
POINT pt5_5;
pt5_5.x=510;
pt5_5.y=510;
POINT pt5_6;
pt5_6.x=530;
pt5_6.y=530;
POINT pt5_7;
pt5_7.x=540;
pt5_7.y=540;
POINT pt5_8;
pt5_8.x=450;
pt5_8.y=250;
CImageList imageList5;
imageList5.Create(66,66,ILC_COLOR24|ILC_MASK,1,0);
imageList5.Add(&bitmap5,RGB(0,0,0));
imageList5.Draw(pDC,0,pt5_1,ILD_TRANSPARENT);
imageList5.Draw(pDC,1,pt5_2,ILD_TRANSPARENT);
imageList5.Draw(pDC,2,pt5_3,ILD_TRANSPARENT);
imageList5.Draw(pDC,3,pt5_4,ILD_TRANSPARENT);
imageList5.Draw(pDC,4,pt5_5,ILD_TRANSPARENT);
imageList5.Draw(pDC,5,pt5_6,ILD_TRANSPARENT);
imageList5.Draw(pDC,6,pt5_7,ILD_TRANSPARENT);
imageList5.Draw(pDC,7,pt5_8,ILD_TRANSPARENT);
/*CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&bitmap2);*/
}
// CmytestView 诊断
#ifdef _DEBUG
void CmytestView::AssertValid() const
{
CView::AssertValid();
}
void CmytestView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CmytestDoc* CmytestView::GetDocument() const // 非调试版本是内联的 {
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CmytestDoc))); return (CmytestDoc*)m_pDocument;
}
#endif //_DEBUG
// CmytestView 消息处理程序
int CmytestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
SetTimer(1,30,NULL);
return 0;
}
void CmytestView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CView::OnTimer(nIDEvent);
CDC *pDC=GetDC();
//刷新背景
RECT rc;
GetClientRect(&rc);
CBrush brush;
brush.CreateSolidBrush(RGB(3,108,254));
pDC->SelectObject(&brush);
CBrush *oldbrush=pDC->SelectObject(&brush);
pDC->Rectangle(&rc);
pDC->SelectObject(oldbrush);
//战机
CBitmap bitmap2;
bitmap2.LoadBitmapW(IDB_ME);
POINT pt2;
pt2.x=m_x_me;
pt2.y=100;
CImageList imageList2;
imageList2.Create(50,60,ILC_COLOR24|ILC_MASK,1,0);
imageList2.Add(&bitmap2,RGB(0,0,0));
imageList2.Draw(pDC,0,pt2,ILD_TRANSPARENT);
//子弹

欢迎试玩一下游戏 方向键:w,a,s,d  控制键:J,K

(0)

相关推荐

  • 插件包打造有直升飞机驾驶与有怪兽的CS

    点击下载该精彩插件补丁 本插件集成AMX0.95beta汉化版(点通)+AMX0.9.4汉化版简明使用手册 (点通)+amx脚本中文教程 (点通译)+DLL修改程序可以修改武器价格购买地点等+各种娱乐插件和比赛插件如下:和摸版: Module: XtraFun v1.2 Module: Vexd Utility (0.2.0.6) Module: CMath 0.3 admin_bury.amx[埋葬插件] admin_disarm.amx[解除武装插件] admin_float.amx[玩家漂

  • JavaScript 小型打飞机游戏实现原理说明

    玩法说明:上下左右控制移动,空格发弹. 每打中一个敌机就加100分,每提升5000分,玩家的飞机的一次发弹数就加一,最多四,被敌机撞到或者让敌机飞到底部就算输.... 演示代码:http://demo.jb51.net/js/FlyBeat/index.html 游戏目前的功能还是比较简单的....貌似就贴个源码不太好,所以这次还是写写思路... 游戏主要分为4个js文件,4个js文件分别包含4个类. 1:飞机类---Flyer 复制代码 代码如下: //飞机对应的dom元素 this.dom

  • JavaScript制作简易的微信打飞机

    简单的用JavaScript模拟微信打飞机,部分功能还不完善,刚开始写,还有很多不足,还望大家多多指出. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv

  • C++编写简易的飞机大战

    初学C/C++的小伙伴可以用做这个小游戏来熟悉一下编程的乐趣. #include<windows.h> #include"resource.h" #include<stdlib.h> #include<time.h> #include<stdio.h> #define TIMER_DIREN 101 //定义定时器 #define TIMER_DIRENMOVE 102 #define TIMER_ZIDAN 103 #define TI

  • pygame实现简易飞机大战

    利用pygame实现了简易版飞机大战.源代码如下: # -*- coding:utf-8 -*- import pygame import sys from pygame.locals import * from pygame.font import * import time import random class Hero(object): #玩家 英雄类 def __init__(self, screen_temp): self.x = 210 self.y = 700 self.life

  • python版飞机大战代码分享

    利用pygame实现了简易版飞机大战.源代码如下: # -*- coding:utf-8 -*- import pygame import sys from pygame.locals import * from pygame.font import * import time import random class Hero(object): #玩家 英雄类 def __init__(self, screen_temp): self.x = 210 self.y = 700 self.life

  • python pygame模块编写飞机大战

    本文实例为大家分享了python pygame模块编写飞机大战的具体代码,供大家参考,具体内容如下 该程序没有使用精灵组,而是用列表存储对象来替代精灵组的动画效果.用矩形对象的重叠来判断相撞事件.该程序可以流畅运行,注释较为详细,希望可以帮助大家. import pygame from pygame.locals import * from sys import exit import time import random # 创建子弹类,把子弹的图片转化为图像对象,设定固定的移动速度 clas

  • Pygame库200行代码实现简易飞机大战

    写在开头,因为这个小游戏的实验主要是帮助我熟悉pygame库的使用,所以游戏的一些地方可能存在不完善处,还望包涵. 安装使用库 pygame简介 pygame是跨平台python模块,专为电子游戏设计,包括图像.声音.建立在SDL基础上,允许实时电子游戏研发而无需被低级语言束缚, 开发者可以把精力放在游戏的架构上. pgame中主要模块介绍 (1) pygame pygame模块会自动导入其它的pygame相关模块. pygame模块包括surface函数, 可以返回一个新的surface 对象

  • JavaScript实现简易飞机大战

    本文实例为大家分享了JavaScript实现简易飞机大战的具体代码,供大家参考,具体内容如下 话不多说,直接上代码 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale

  • java实现简易飞机大战

    目录 整体思路 代码实现 英雄战机类 敌机类 子弹类 图片工具类 游戏窗体类 启动游戏类 运行效果图 本文实例为大家分享了java实现简易飞机大战的具体代码,供大家参考,具体内容如下 整体思路 1.创建游戏窗体,添加面板JPanel,重写JPanel中的paint方法,遍历所有飞机和子弹绘制,用定时器进行重绘,实现动画效果2.添加敌机和发射子弹用的是多线程3.碰撞检测采用的是矩形类Rectangle中的intersects方法 代码实现 用手机查看代码好像只显示62行 英雄战机类 package

  • C++编写实现飞机大战

    本文实例为大家分享了C++编写实现飞机大战的具体代码,供大家参考,具体内容如下 前几天看大佬写了个神经网络训练AI玩飞机大战,我想,凭我现有知识能不能也写一个飞机大战,就进行了尝试,成果如下. #include<iostream> #include<ctime> #include<stdlib.h> #include<windows.h> using namespace std; const int mapx = 40, mapy = 35, cost =

  • JavaScript原生编写《飞机大战坦克》游戏完整实例

    先来看看开始的界面图 实现思路: 1.打开页面,背景开始走动: 2.点击开始,飞机开始不断发射子弹,敌人随机出现在上方: 3.当敌人碰到子弹,敌人消失: 4.当敌人和飞机相遇,飞机死亡,结束游戏: html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>飞机大战</title> <link r

  • JavaScript编写实现飞机大战

    本文实例为大家分享了JavaScript实现飞机大战的具体代码,供大家参考,具体内容如下 一.飞机大战游戏介绍: 游戏中,玩家驾驶飞机,在空中进行战斗.点击并移动自己的飞机,发射炮弹,打掉敌小型飞机.中型飞机和大型飞机,来获得分数和奖励,打掉一架小型飞机赢得3分,打掉一架中型飞机赢得5分,打掉一架大型飞机赢得10分,累加得分.撞到敌飞机命减1,当命数为0时,则游戏结束. 二. 效果图页面展示: 初始界面如图-1所示: 玩家在如图-1所示的界面的任意位置,按下鼠标左键,开始游戏. 图-1 默认分数

随机推荐