tankgame2008.cs

来自「基于.net FrameWork的windows游戏-坦克大战游戏.用到了多线程」· CS 代码 · 共 103 行

CS
103
字号
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TankGame2008
{
    public partial class TankGame2008 : Form
    {
        public TankGame2008()
        {
            
            InitializeComponent();
            
        }

        int myTankWidth, myTankHeight;
        int enemyTankWidth, enemyTankHeight;
        int myTankX, myTankY;
        int enemyTankX, enemyTankY;
        Image[] myTankImg;
        Image[] enemyTankImg;
        PlayerTankSprite myTankSprite;
        EnemyTankSprite enemyTank;
        Graphics bufferGraphics;
        Image bufferImage;

        private void TankGame2008_Load(object sender, EventArgs e)
        {
            myTankImg = new Image[4];
            enemyTankImg = new Image[4];
            for (int i = 0; i < 4; i++)
            {
                myTankImg[i] = Image.FromFile(@"D:\WebSites\新程序\TankGame2008\pic\PlayerTank\myTank" + i + ".png");
                enemyTankImg[i] = Image.FromFile(@"D:\WebSites\新程序\TankGame2008\pic\enemyTank\enemyTank" + i + ".png");
            }
            myTankWidth = myTankImg[0].Width;
            myTankHeight = myTankImg[0].Height;
            enemyTankWidth = enemyTankImg[0].Width;
            enemyTankHeight = enemyTankImg[0].Height;
            myTankX = (this.Width - myTankWidth) / 2;
            myTankY = (this.Height - myTankHeight) / 2;
            enemyTankX = (this.Width - enemyTankWidth)/3;
            enemyTankY = (this.Height-enemyTankHeight)/3;
            //缓冲
            SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint,true);

            bufferImage = new Bitmap(this.Width, this.Height);
            bufferGraphics = Graphics.FromImage(bufferImage);
            bool focus = this.Focus();
            myTankSprite = new PlayerTankSprite(myTankImg, myTankX, myTankY, this);
            enemyTank = new EnemyTankSprite(enemyTankImg, enemyTankX, enemyTankY, this);
            enemyTank.setTankDirection(0);

            this.enemyTankStart();
        }

        public void enemyTankStart()
        {
            enemyTank.startRuning();
        }

        public void myTankStart()
        {
            myTankSprite.startRuning();
        }

        public void stop()
        {
            myTankSprite.stopRuning();
            enemyTank.stopRuning();
        }

        private void TankGame2008_Paint(object sender, PaintEventArgs e)
        {
            bufferGraphics.Clear(Color.Blue);

            myTankSprite.drawSprite(bufferGraphics, myTankSprite.getTankDirection());
            enemyTank.drawSprite(bufferGraphics, enemyTank.getTankDirection());
            e.Graphics.DrawImage(bufferImage, 0F, 0F);
        }

        public void update(Graphics g)
        {
            TankGame2008_Paint(null, null);
        }

        private void TankGame2008_KeyDown(object sender, KeyEventArgs e)
        {
            myTankSprite.keyDown(e.KeyValue);
            this.myTankStart();
        }

        private void TankGame2008_KeyUp(object sender, KeyEventArgs e)
        {
            myTankSprite.keyReleased();
        }

    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?