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 + -
显示快捷键?