📄 config.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using System.Drawing;
using System.Collections;
namespace MyTetris
{
/// <summary>
/// 配置类,用来读取、保存xml文件
/// </summary>
class Config
{
/// <summary>
/// 下移键
/// </summary>
private Keys _downKey;
/// <summary>
/// 丢下键
/// </summary>
private Keys _dropKey;
/// <summary>
/// 左移键
/// </summary>
private Keys _leftKey;
/// <summary>
/// 右移键
/// </summary>
private Keys _rightKey;
/// <summary>
/// 顺时针旋转
/// </summary>
private Keys _DeasilKey;
/// <summary>
/// 逆时针旋转
/// </summary>
private Keys _DiseconomicsKey;
/// <summary>
/// 水平格子数
/// </summary>
private int _coorWidth;
/// <summary>
/// 垂直格子数
/// </summary>
private int _coorHeight;
/// <summary>
/// 格子像素
/// </summary>
private int _rectPix;
/// <summary>
/// 背景色
/// </summary>
private Color _backColor;
/// <summary>
/// 方块集合信息
/// </summary>
private BlockInfoArr info = new BlockInfoArr();
#region 属性
public Keys DownKey
{
get { return _downKey; }
set { _downKey = value; }
}
public Keys DropKey
{
get { return _dropKey; }
set { _dropKey = value; }
}
public Keys LeftKey
{
get { return _leftKey; }
set { _leftKey = value; }
}
public Keys RightKey
{
get { return _rightKey; }
set { _rightKey = value; }
}
public Keys DeasilKey
{
get { return _DeasilKey; }
set { _DeasilKey = value; }
}
public Keys DiseconomicsKey
{
get { return _DiseconomicsKey; }
set { _DiseconomicsKey = value; }
}
public int CoorWidth
{
get { return _coorWidth; }
set { _coorWidth = value; }
}
public int CoorHeight
{
get { return _coorHeight; }
set { _coorHeight = value; }
}
public int RectPix
{
get { return _rectPix; }
set { _rectPix = value; }
}
public Color BackColor
{
get { return _backColor; }
set { _backColor = value; }
}
public BlockInfoArr Info
{
get { return info; }
set { info = value; }
}
#endregion
/// <summary>
/// 读取xml文件
/// </summary>
public void LoadFromXml()
{
XmlTextReader xtr;
if (File.Exists("Config.xml"))
{
xtr = new XmlTextReader("Config.xml");
}
else //如果外部xml文件不存在,则从嵌入资源内读取.xml
{
Assembly asm=Assembly.GetExecutingAssembly();
Stream s = asm.GetManifestResourceStream("MyTetris.Config.xml");
xtr=new XmlTextReader(s);
}
string key="";
try{
while(xtr.Read())
{
if(xtr.NodeType==XmlNodeType.Element)
{
if(xtr.Name=="id"){
key=xtr.ReadElementString().Trim();
info.AddBlock(key,"");
}
else if(xtr.Name=="color"){
info[key]=xtr.ReadElementString().Trim();
}
else if(xtr.Name=="downKey") {
_downKey=(Keys)Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="dropKey") {
_dropKey=(Keys)Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="leftKey") {
_leftKey=(Keys)Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="rightKey") {
_rightKey=(Keys)Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="DeasilKey") {
_DeasilKey=(Keys)Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="DiseconomicsKey") {
_DiseconomicsKey=(Keys)Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="coorWidth") {
_coorWidth=Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="coorHeight") {
_coorHeight=Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="rectPix") {
_rectPix=Convert.ToInt32(xtr.ReadElementString().Trim());
}
else if(xtr.Name=="backColor") {
_backColor=Color.FromArgb(Convert.ToInt32(xtr.ReadElementString().Trim()));
}
}
}
}catch(Exception e){
//MessageBox.Show(e.ToString());
}finally{
if(xtr!=null)
xtr.Close();
}
}
/// <summary>
/// 保存xml文件
/// </summary>
public void SaveToXml()
{
XmlDataDocument xdd = new XmlDataDocument();
xdd.LoadXml("<BlockConfig></BlockConfig>");
XmlNode root = xdd.SelectSingleNode("BlockConfig");
//写方块信息
for (int i = 0; i < info.Length;i++)
{
XmlElement xeType = xdd.CreateElement("type");
XmlElement xeId = xdd.CreateElement("id");
xeId.InnerText = ((BlockInfo)info[i]).GetIdStr();
xeType.AppendChild(xeId);
XmlElement xeColor = xdd.CreateElement("color");
xeColor.InnerText = ((BlockInfo)info[i]).GetColorStr();
xeType.AppendChild(xeColor);
root.AppendChild(xeType);
}
//写按键信息
XmlElement xelKey = xdd.CreateElement("key");
XmlElement xelDownKey = xdd.CreateElement("downKey");
xelDownKey.InnerText = Convert.ToInt32(_downKey).ToString();
xelKey.AppendChild(xelDownKey);
XmlElement xelDropKey = xdd.CreateElement("dropKey");
xelDropKey.InnerText = Convert.ToInt32(_dropKey).ToString();
xelKey.AppendChild(xelDropKey);
XmlElement xelLeftKey = xdd.CreateElement("leftKey");
xelLeftKey.InnerText = Convert.ToInt32(_leftKey).ToString();
xelKey.AppendChild(xelLeftKey);
XmlElement xelRightKey = xdd.CreateElement("rightKey");
xelRightKey.InnerText = Convert.ToInt32(_rightKey).ToString();
xelKey.AppendChild(xelRightKey);
XmlElement xelDeasilKey = xdd.CreateElement("DeasilKey");
xelDeasilKey.InnerText = Convert.ToInt32(_DeasilKey).ToString();
xelKey.AppendChild(xelDeasilKey);
XmlElement xelDiseconomicsKey = xdd.CreateElement("DiseconomicsKey");
xelDiseconomicsKey.InnerText = Convert.ToInt32(_DiseconomicsKey).ToString();
xelKey.AppendChild(xelDiseconomicsKey);
root.AppendChild(xelKey); //将按键信息放入key节点
//写界面信息
XmlElement xelSurFace = xdd.CreateElement("surface");
XmlElement xelCoorWidth = xdd.CreateElement("coorWidth");
xelCoorWidth.InnerText =_coorWidth.ToString();
xelSurFace.AppendChild(xelCoorWidth);
XmlElement xelCoorHeight = xdd.CreateElement("coorHeight");
xelCoorHeight.InnerText = _coorHeight.ToString();
xelSurFace.AppendChild(xelCoorHeight);
XmlElement xelRectPix = xdd.CreateElement("rectPix");
xelRectPix.InnerText = _rectPix.ToString();
xelSurFace.AppendChild(xelRectPix);
XmlElement xelBcolor = xdd.CreateElement("backColor");
xelBcolor.InnerText = _backColor.ToArgb().ToString();
xelSurFace.AppendChild(xelBcolor);
root.AppendChild(xelSurFace);
xdd.Save("Config.xml");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -