⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tankgame2008.cs

📁 基于.net FrameWork的windows游戏-坦克大战游戏.用到了多线程,绘图,碰撞处理等技术,整个游戏的框架已经搭建起来,可以做二次开发.
💻 CS
字号:
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();

        }

        const int EnemyNum = 4;
        int myTankWidth, myTankHeight;
        int enemyTankWidth, enemyTankHeight;
        int myTankX, myTankY;
        int enemyTankX, enemyTankY;
        Image[] myTankImg;
        Image[] enemyTankImg;
        PlayerTankSprite myTankSprite;
        EnemyTankSprite[] enemyTank;
        TankThread threadTank;
        Image bufferImage;
        Graphics bufferGraphics;
        Random rand;

        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;
            //缓冲
            SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

            bufferImage = new Bitmap(this.Width, this.Height);
            bufferGraphics = Graphics.FromImage(bufferImage);
            bool focus = this.Focus();
            rand = new Random();
            myTankSprite = new PlayerTankSprite(myTankImg, myTankX, myTankY, this);
            enemyTank = new EnemyTankSprite[EnemyNum];
            for (int i = 0; i < 4; i++)
            {
                enemyTankX = rand.Next(this.Width - enemyTankWidth);
                enemyTankY = rand.Next(this.Height - enemyTankHeight);
                enemyTank[i] = new EnemyTankSprite(enemyTankImg, enemyTankX, enemyTankY, this);
                enemyTank[i].setTankDirection(rand.Next(4));
            }
            threadTank = new TankThread(this, myTankSprite, enemyTank);
            this.start();
        }

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

            for (int i = 0; i < EnemyNum; i++)
            {
                enemyTank[i].drawSprite(bufferGraphics, enemyTank[i].getTankDirection());
                int k = rand.Next(10000);
                if (k % 2 == 0 && k < 30)
                {
                    enemyTank[i].setTankDirection(rand.Next(4));
                }
            }
            myTankSprite.drawSprite(bufferGraphics, myTankSprite.getTankDirection());
            e.Graphics.DrawImage(bufferImage, 0F, 0F);
        }

        public void start()
        {
            threadTank.startRuning();
        }

        public void stop()
        {
            threadTank.stopRuning();
        }

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

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

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

        private void TankGame2008_Shown(object sender, EventArgs e)
        {
            MessageBox.Show("要爽由自己,可口可乐.", "我是蜘蛛侠");
        }

    }
}

⌨️ 快捷键说明

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