📄 tankgame2008.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 + -