C#开发-----百变方块游戏

2023-11-13

转载请标明是引用于 http://blog.csdn.net/chenyujing1234

例子代码:

n 游戏在 6× 6 格子的棋盘中进行,可排出55种不同的组合图案。主要开发人的抽象思维能力、空间想象能力、动手能力、几何构建能力。游戏运行时功能如下。
n (1)实现用鼠标拖动拼块,拼块任意位置摆放。
n (2)绕拼块的中心点旋转(旋转由鼠标右键操作实现)。
n (3)拼块水平翻转(由鼠标双击操作实现)

n百变方块游戏效果如图22-1所示。用户拖动棋盘周围的8种拼块到棋盘中,直到棋盘所有空白方块格子被填满则此关游戏胜利。单击“新方块图案”按钮则进入下一关游戏。如果玩家无法完成则可以单击“参考答案”按钮查看参考拼图方案。

 

地图信息存储
 
n 地图信息采用文本文件map.txt存储保存。根据目标图案按列存放,每关占一行。0代表固定不变的绿色填充方格,1代表蓝色填充的方格(即需要用户的8种拼块填充的方格)。
1,1,1,1,1,1 , 1,1,1,1,1,1 , 0,0,0,0,0,1 , 0,1,0,1,0,1 , 1,1,1,1,1,1 , 1,1,1,1,1,1 ,
1,1,1,1,1,1,1,1,0,1,0,1,1,0,0,0,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,
n 游戏在 6× 6 格子的棋盘中进行,每关开始时从文本文件map.txt读取相应关所对应行的字符串, 分割后将数据按列将目标图案存储到二维数组 OrgMap[6,6] 而用户移动拼块后的图案按列存储到二维数组Map[6,6]中。通过对比两个数组知道是否成功完成此关。

 

1.拼块类(CChip.cs
字段 m_nType 存储拼块的类型代号,总计有7个拼块。分别用 1 8 代表图22-3的七个拼块。 m_nPointCount 存储拼块的顶点个数, m_pointList 存储拼块的顶点坐标。 myPath 是形成拼块的路径。
 
class CChip
    {
        Point []m_pointList;     //顶点坐标
        int m_nPointCount;     //顶点个数
        int m_nType;          //类型代号
        private GraphicsPath myPath;
        …….
}

 

拼块的参数设置方法SetChip
 
      拼块类提供对拼块的参数设置方法SetChip,该方法完成拼块类型代号的设置,拼块图案顶点坐标初始化,最终形成拼块的路径。
        public void SetChip(int type,  Point []ppointlist, int count)  
        { 
            m_nType = type; 
            m_nPointCount = count; 
            m_pointList = new Point[m_nPointCount]; 
            for(int i=0; i<count; i++) 
            m_pointList[i] = ppointlist[i]; 
            myPath = new GraphicsPath(); 
            myPath.AddLines(m_pointList); 
            myPath.CloseFigure();//CloseFigure方法闭合当前图形并开始新图形。 
        } 


 

拼块的平移
Move(int x_offset, int y_offset)应用Matrix实现GraphicsPath路径的平移。
        public  void Move(int x_offset, int y_offset)
        {
            Matrix matrix = new Matrix();
            matrix.Translate(x_offset, y_offset); //追加平移
            myPath.Transform(matrix);//应用变形
            myPath.CloseFigure();
        }
        Move2(int x_offset, int y_offset)不用Matrix实现GraphicsPath路径的平移,而是直接对路径的每个顶点一一平移。
        public void Move2(int x_offset, int y_offset)
        {
            myPath.Reset();                  //清空路径
            for (int i = 0; i < m_nPointCount; i++) // 平移各顶点
            {
                m_pointList[i].X += x_offset;
                m_pointList[i].Y += y_offset;
            }
            myPath.AddLines(m_pointList);
            myPath.CloseFigure();
        }
拼块的旋转
Rotation()应用Matrix实现GraphicsPath路径的旋转,每次旋转45度。
        public  void Rotation()
        {
            Matrix matrix = new Matrix();
            RectangleF rect = new RectangleF();
            rect = myPath.GetBounds();
            // 计算旋转中心坐标(x,y)
            double x = rect.Left + rect.Width / 2;
            double y = rect.Top + rect.Height / 2;
            //matrix.Rotate(45.0f); //旋转顺时针45度
            matrix.RotateAt(45.0f, new Point((int)x, (int)y)); //旋转顺时针45度
        }
拼块的旋转(2
Rotation2()不用Matrix实现GraphicsPath路径的旋转,而是获取myPath的矩形区域,计算旋转中心,从而计算出每个顶点的新坐标。
        public void Rotation2()
        {
            RectangleF rect=new RectangleF() ;
            rect=myPath.GetBounds();
            myPath.Reset();                //清空路径
            double x = rect.Left + rect.Width/2; // 计算旋转中心
            double y = rect.Top + rect.Height/ 2;
            double dx, dy;
            for (int i = 0; i < m_nPointCount; i++) // 旋转各顶点
            {
                dx = m_pointList[i].X  - x;
                dy = m_pointList[i].Y - y;
                m_pointList[i].X = (int)(x + dx * 0.7071 - dy * 0.7071);
                m_pointList[i].Y = (int)(y + dx * 0.7071 + dy * 0.7071);
            }             
            myPath.AddLines(m_pointList);
            myPath.CloseFigure();
        }
拼块水平反转
ReverseTurn()获取myPath的矩形区域,计算旋转中心,从而计算出水平翻转后每个顶点的新坐标。
        public void ReverseTurn()               // 水平反转
        {
            RectangleF rect = new RectangleF();
            rect = myPath.GetBounds();
            myPath.Reset();
            double x = rect.Left + rect.Width / 2; // 计算旋转中心
            double y = rect.Top + rect.Height / 2;
            for (int i = 0; i < m_nPointCount; i++) // 水平反转各点
            {
                m_pointList[i].X = (int)(2 * x - m_pointList[i].X);
                m_pointList[i].Y = m_pointList[i].Y;
            }
            myPath.AddLines(m_pointList);
            myPath.CloseFigure();
        }

DrawChip( ) Graphics 对象上画出拼块。每个拼块设置不同的填充颜色。

public void DrawChip(Graphics g)//画拼块
        {  
            Pen myPen = new Pen(Color.Black, 1);
            g.DrawPath(myPen, myPath);
            int alpha = 140;   //透明度
            Color c= Color.FromArgb(alpha, 255, 255, 255);
            switch (m_nType)
            {
                case 1:
                    c = Color.FromArgb(alpha, 127, 127, 127);
                    break;
                case 2:
                    c = Color.FromArgb(alpha, 255, 0, 0);
                    break;
                case 3:
                    c = Color.FromArgb(alpha, 200, 255, 0);
                    break;
                .......
                case 8:
                    c = Color.FromArgb(alpha, 228, 128, 128);
                    break;
            }            
            SolidBrush brushNew = new SolidBrush(c);
            g.FillPath(brushNew, myPath); 
        }

对用户移动的拼块进行位置校正
Verity(int CHIP_WIDTH)对用户移动的拼块进行位置校正,方法是判断拼块的第一个顶点坐标m_pointList[0]接近棋盘中那个方格,则计算出偏移量后,对拼块的所有顶点进行修正,保证拼块移动到适当的方格位置处。
        public void Verity(int CHIP_WIDTH)
        {
            myPath.Reset();                         //清空路径
            int x_offset=0, y_offset=0;
            int d;
            d=m_pointList[0].X % CHIP_WIDTH;
            if (d != 0)
                x_offset -= (d < CHIP_WIDTH / 2 ? d:d- CHIP_WIDTH);
            d = m_pointList[0].Y % CHIP_WIDTH;
            if (d != 0)
                y_offset -= (d < CHIP_WIDTH / 2 ? d:d- CHIP_WIDTH);
            for (int i = 0; i < m_nPointCount; i++) // 平移各点
            {
                m_pointList[i].X += x_offset;
                m_pointList[i].Y += y_offset;
            }
            myPath.AddLines(m_pointList);
            myPath.CloseFigure();
        }

2.设计窗体类(Form1.cs)
 
窗体加载事件


 

int [,]Map=new int[6,6];
    int[,] OrgMap = new int[6, 6];//初始化目标地图OrgMap

     窗体加载事件中,调用Reset()对8个拼块的顶点坐标m_chipList 数组初始化。调用ReadOrgMap(1)方法读出第一关目标图案的地图信息到OrgMap二维数组中。
    private void Form1_Load(object sender, EventArgs e)
    {
        Reset();// 初始化拼图块
        //以下两句是为了设置控件样式为双缓冲,这可以有效减少闪烁的问题
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
        this.UpdateStyles();
        ReadOrgMap(1); //读出第一关目标图案的地图信息到OrgMap二维数组中
        Draw_AllChip();//画出所有拼块
    }

 

初始化拼块
Reset()初始化拼图块顶点坐标m_chipList 数组,并形成拼块的图形路径。

private void Reset()
    {
        for (int i = 0; i < CHIP_COUNT; i++)
            m_chipList[i] = new CChip();
        Point[] pointList = new Point[MAX_POINTS];
        int sx=250, sy=0;
        pointList[0] = new Point(sx , sy );
        pointList[1] = new Point(sx +  2* CHIP_WIDTH, sy );
        pointList[2] = new Point(sx +  2* CHIP_WIDTH, sy + 2 * CHIP_WIDTH);
        pointList[3] = new Point(sx , sy + 2 * CHIP_WIDTH);       
        m_chipList[0].SetChip(1, pointList, 4); //m_chipList[0]为一个2W*2W的正方形
        sx =170 ; sy = 90;
        pointList[0] = new Point(sx + CHIP_WIDTH * 2, sy);
        pointList[1] = new Point(sx + CHIP_WIDTH * 6, sy);
        pointList[2] = new Point(sx + CHIP_WIDTH * 6, sy + CHIP_WIDTH);
        pointList[3] = new Point(sx + CHIP_WIDTH * 2, sy + CHIP_WIDTH);       
        m_chipList[1].SetChip(2, pointList, 4); //m_chipList[1]为一个4W*1W的长方形
        ……
}
读出第n关的地图信息
ReadOrgMap()方法从map.txt文本文件按行读出第n关目标图案的地图信息到OrgMap二维数组中。
private void ReadOrgMap(int n)
    {
        string filename = "map.txt";
        FileStream fs = File.OpenRead(filename);
        StreamReader sr = new StreamReader(fs, Encoding.Default);
        string t = null;
        while (n > 0)
        {
            t = sr.ReadLine();
            n--;
        }
        sr.Close();
        fs.Close();
        string [] a = new string[36 + 1];
        a = t.Split(',');
        for (int i = 1; i < 7; i++)
            for (int j = 1; j < 7; j++)                
                OrgMap[i-1, j-1]=Convert.ToInt16(a[(i-1)*6+j-1]);
    }


 

新方块图案按钮单击事件
计算出新图案序号n,调用Reset()对8个拼块m_chipList 数组初始化并调用Draw_AllChip()画出所有8个拼块。
private void button1_Click(object sender, EventArgs e)//“新图案”按钮
    {
        n++;                        
        if (n > max)
        {
            MessageBox.Show("没有新图案了");
            n--;
            return;
        }
        ReadOrgMap(n);//读目标地图OrgMap文件
        Map = new int[6, 6];
        Reset();					// 初始化拼图块
        Draw_AllChip();				//画出所有拼块
    }

Draw_AllChip()画出所有拼块
Draw_AllChip()根据新图案序号n缩半画出640*480的目标图案,通过循环调用拼块类Cchip. DrawChip() 方法画出所有拼块。
private void Draw_AllChip()			///画出所有拼块及目标图案
    {
        Bitmap bmp = new Bitmap(this.Width, this.Height);
        this.BackgroundImage = bmp;
        //Graphics g = this.CreateGraphics();
        Graphics g = Graphics.FromImage(bmp);            
        g.Clear(this.BackColor);
        string r=n.ToString()+".jpg"; 
        Bitmap s = (Bitmap)Image.FromFile(r);
        //g.DrawImage(s,new  Point(400, 0)); 
        g.DrawImage(s, new Rectangle(450, 10, 320, 240), 
            new Rectangle(0, 0, 640, 480),GraphicsUnit.Pixel); //在(450,10)处显示320*240图案
        for (int i = 0; i < CHIP_COUNT; i++)
            m_chipList[i].DrawChip(g);
    }


 

窗体鼠标按下事件
在窗体鼠标按下事件中,首先获取鼠标坐标Point(e.X, e.Y),判断是否在某拼块区域中,如果在记录用户选中的拼块序号。并通过e.Button判断用户是否右键单击,如果右键单击则将用户选中的拼块顺时针旋转90度,重画所有拼块。
private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        Point p = new Point(e.X, e.Y);
        for (int i = 0; i < CHIP_COUNT; i++)
            if (m_chipList[i].PtInChip(p) == true)
            {
                m_nCurrIndex = i;           //记录用户选中的拼块
                Drag_PictBox = true;        //移动标志赋值为真
                oldx = e.X;
                oldy = e.Y;
                break;  
            }            
        if (e.Button == MouseButtons.Right) //右键旋转
        {                
            m_chipList[m_nCurrIndex].Rotation2(); //旋转顺时针45度
            m_chipList[m_nCurrIndex].Rotation2(); //旋转顺时针45度
            Draw_AllChip();//画出所有拼块
        }
     }

窗体鼠标移动事件
在窗体鼠标移动中,首先获取鼠标坐标Point(e.X, e.Y),显示在窗体上,然后计算偏移量传给拼块类Cchip.Move2方法,改变用户选中拼块m_nCurrIndex的各点坐标,重画所有拼块。
private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        Point p = new Point(e.X, e.Y);
        label1.Text = p.ToString();
        if (Drag_PictBox == true)
        {
            Cursor.Current = Cursors.Hand;
            m_chipList[m_nCurrIndex].Move2(e.X - oldx, e.Y - oldy); //移动
            Draw_AllChip();                //画出所有拼块
        }        
        oldx = e.X;
        oldy = e.Y;
    }
窗体鼠标松开事件
在窗体鼠标松开事件中,对用户移动的m_nCurrIndex拼块进行位置校正,保证移动到适当的方格位置处。并判断游戏是否成功。
private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        Drag_PictBox = false;
        //对用户选中的m_nCurrIndex拼块坐标进行修正,放置到正确位置
        m_chipList[m_nCurrIndex].Verity(CHIP_WIDTH);            
        Draw_AllChip();                //画出所有拼块
        if(Win()) MessageBox.Show("成功完成此关")  ;   //判断是否成功
    }
窗体的鼠标双击事件
在窗体的鼠标双击事件中,对相应拼块进行水平翻转。
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        Point p = new Point(e.X, e.Y);
        for (int i = 0; i < CHIP_COUNT; i++)
            if (m_chipList[i].PtInChip(p) == true)
            {
                m_nCurrIndex = i;           //记录用户选中的拼块
                Drag_PictBox = true;         
                oldx = e.X;
                oldy = e.Y;
                break;
            }
        m_chipList[m_nCurrIndex].ReverseTurn();  水平反转
        Draw_AllChip();//画出所有拼块
    }
窗体重绘事件
在窗体重绘事件中,绘制棋盘和本关已固定的绿色方块。
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Graphics gp = e.Graphics;
        SolidBrush myBrush = new SolidBrush(Color.Green);
        for (int i = 0; i < 6; i++)	//绘制本关已固定的绿色方块
            for (int j = 0; j < 6; j++) {
                if(OrgMap[i,j]==0)
                    gp.FillRectangle(myBrush, i * CHIP_WIDTH, 
                                    j * CHIP_WIDTH, CHIP_WIDTH, CHIP_WIDTH);
            }
        Pen p = new Pen(Color.Brown, 1);
        for (int i = 1; i < 7; i++) 				//绘制棋盘
            for (int j = 1; j < 7; j++) {
                gp.DrawLine(p, 1, j * CHIP_WIDTH, CHIP_WIDTH*6, j * CHIP_WIDTH);
                gp.DrawLine(p, i * CHIP_WIDTH, 1, i * CHIP_WIDTH, CHIP_WIDTH * 6);                     
            }
    } 





 

 


 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#开发-----百变方块游戏 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 【综合类型第 34 篇】喜讯!喜讯!!喜讯!!!,我在 CSDN 的第一个实体铭牌

    这是 综合类型第 34 篇 如果觉得有用的话 欢迎关注专栏 2022年7月19日 14 25 CSDN 官方博客给我发了一条私信 内容如下 为了表彰在 CSDN 社区发展中 做出 突出贡献 取得 优秀成绩 的用户 我们特地准备了实体铭牌 恭
  • EA12版本怎么恢复Project Browser

    其实是个小问题 不知道怎么就关闭Project Browser 了 找了好久才找到
  • springboot2.0从apollo读取配置

    参考 https github com nobodyiam apollo build scripts 本篇文章包括两点 Windows环境下apollo单机搭建 springboot2 0从apollo读取配置 一 windows环境下ao
  • kubectl查看容器日志

    kubectl get pod n 命名空间 kubectl logs 容器名称 n 命名空间
  • 青龙脚本 小黄鸟配合虚拟机抓变量 软件集

    鉴于很多青龙脚本变量 真机很难抓到 需要小黄鸟配合虚拟机抓变量 为方便网友 把相关3个软件分享 以单个文件形式 1 小黄鸟 https wwm lanzouy com i5vWT01qi6na 2 虚拟机 https wwm lanzouy
  • nvcc使用指定gcc版本(不改变全局gcc版本)

    在nvcc后面加上 compiler bindir usr bin gcc x即可 x为指定的gcc版本号
  • MSP430F5529学习笔记(6)——导入MSP430Ware,查看例程

    MSP430WARE下载 目录 在线版本 下载MSP430Ware 查看例程 导入例程 离线版本 下载MSP430Ware 查看例程 导入例程 MSP430Ware里面有很多例程和库函数使用手册 我们可以查看学习 非常重要 在线版本 下载M
  • 使用计算机结束时断开终端的连接属于什么,计算机结束时断开终端的连接属于什么...

    计算机结束时断开终端的连接属于外部终端的物理安全 终端安全管理 endpoint security management 是一种保护网络安全的策略式方法 它需要终端设备在得到访问网络资源的许可之前遵从特定的标准 推荐学习 web前端视频教程
  • 【数模】插值算法

    插值算法的介绍 插值的作用 当现有的数据是极少的 不足以支撑分析的进行时 用于 模拟产生 一些新的但又比较靠谱的值来满足需求 插值函数 插值 插值法的概念 插值法的分类 插值多项式 P x 为次数不超过n的代数多项式 即 数模中也常见 但不
  • ARM——体系架构

    1 ARM简介 ARM是Advanced RISC Machines的缩写 它是一家微处理器行业的知名企业 该企业设计了大量高性能 廉价 耗能低的RISC 精简指令集 处理器 公司的特点是只设计芯片 而不生产 它将技术授权给世界上许多著名的
  • Centos下使用脚本快速安装GO语言环境

    Centos使用shell脚本快速安装go环境并安装spaceVim IDE 脚本如下 bin bash env git install echo 安装依赖中 sudo yum y install make autoconf automak
  • Tomcat配置context.xml问题

    关于Tomcat的配置文件问题 请参考Apache Tomcat官网Document菜单 根据版本号选择恰当的Reference 我使用的环境 netbeans 内嵌 Tomcat 8 0 1
  • 彻底删除VMware虚拟机

    您是否和我一样被VMware气到了呢 您是否再也不想理VMware了呢 您是否不想再在自己电脑上看到VMware这几个英文字母了呢 来吧 跟着我的步骤 一起和VMware说拜拜吧 一 在卸载VMware虚拟机之前 要先把与VMware相关的
  • 工业上的数控机床所属计算机应用的什么领域,以下哪一项不是企业初步战略方案包括的内容?()。...

    摘要 弹簧振子的振幅增加一倍 下业初则 步战工业机器人最重要的核心能力 社会学是指一门科学 略方即它以解释的方式来理解社会行动 略方据此 通过社会行为的过程及其结果 对社会行为作出因果解释 因此 社会学的研究对象是 研究的方法是 弹簧振子的
  • 西门子S7 模拟器使用教程

    一 S7协议概述 S7协议是西门子S7系列PLC通信的核心协议 它是一种位于传输层之上的通信协议 其物理层 数据链路层可以是MPI总线 PROFIBUS总线或者工业以太网 S7以太网协议本身也是TCP IP协议簇的一员 S7协议在OSI中的
  • PCB中过孔和通孔焊盘的区别

    在PCB设计中 过孔VIA和焊盘PAD都可以实现相似的功能 它们都能插入元件管脚 特别是对于直插 DIP 封装的的器件来说 几乎是一样的 但是 在PCB制造中 它们的处理方法是不一样的 1 VIA的孔在设计中表明多少 钻孔就是多少 然后还要
  • 接口继承_1

    摘自Jeffrey的CLR via CSharp 接口方法默认是virtual and sealed 意思是接口方法默认是没有继承的 这一点在你需要多态时需要注意 Base b new Base Derived d new Derived
  • 修改Windows Server 2012远程桌面连接端口并连接

    目录 文章目录 目录 一 修改注册表 二 添加防火墙放行端口 三 控制面板设置允许被远程连接 四 重启远程桌面服务 五 进行远程连接 一 修改注册表 步骤1 打开注册表 方法一 win键 R调出命令运行输入框 输入 regedit exe
  • 网络安全-常见面试题(Web、渗透测试、密码学、Linux等)

    目录 WEB安全 OWASP Top 10 2017 Injection 注入攻击 Broken Authentication 失效的身份认证 Sensitive Data Exposure 敏感数据泄露 XXE XML 外部实体 Brok
  • C#开发-----百变方块游戏

    转载请标明是引用于 http blog csdn net chenyujing1234 例子代码 http www rayfile com zh cn files b6ed0bc0 8e9e 11e1 8178 0015c55db73d n