c#开发大冲锋游戏登录器

avatar
avatar
kktoo
45
文章
12
评论
2020年3月1日22:15:17 5 8,408 2640字阅读8分48秒

1 前言

本文主要分享登录器的简要开发过程,只适合小白选手,高手请自动避让。

此项目是复刻大冲锋计划中的子集。

(注:大冲锋是迅雷代理的一款次时代多职业第一人称FPS射击游戏,目前已经关服嗝屁。)

c#开发大冲锋游戏登录器

2 效果展示

c#开发大冲锋游戏登录器

3 技术选型

本文选用c#语言,WPF框架来开发游戏登录器,考量的原因:

  • 大量的unity开发人员,普遍熟悉c#、dotNet、WPF技术栈,用起来轻车熟路,成本低

  • 由于Win7系统自带.NET 3.5、Win8系统自带 .NET 4.0,所以可以覆盖绝大多数目标平台

  • WPF技术成熟,案例多,相关资料丰富

4 设计

4.1 功能拆分

主要分为三大块

  • UI表现

  • 启动游戏

  • 登陆校验

本文限于时间和篇幅,重点介绍UI表现部分,关于登陆校验和启动游戏,只使用本地逻辑进行简单的模拟示意。

4.2 素材准备

在大冲锋登录器目录下,可以发现图片素材和布局素材,我们只取用图片素材如下:

c#开发大冲锋游戏登录器

5 窗体

5.1 实现异形窗体

WPF实现不规则窗体的方法有好几种,比如使用blend绘制,比如使用path进行clip。有兴趣的请自行搜索扩展了解。

本文选择一个比较傻瓜的方式:使用透明背景的png图片。

窗体xaml实现如下:

  1. <Window x:Class="FCLoginMain.MainWindow"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6.         xmlns:local="clr-namespace:FCLoginMain"
  7.         mc:Ignorable="d"
  8.         Title="迅雷游戏登录器-大冲锋" Height="673" Width="950" AllowsTransparency="True" WindowStyle="None" OpacityMask="White" Background="Transparent" Icon="pack://siteoforigin:,,,/img/FCLoginMain.ico">
  9. </Window>

重点是窗体的几个属性设置:

AllowsTransparency="True" - 允许透明

WindowStyle="None" - 去掉边框

OpacityMask="White" - 设置白色透明

Background="Transparent" - 设置背景透明

5.2 实现窗体拖动

为Gird订阅MouseLeftButtonDown事件:

  1. <Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown">
  2.     <Image Stretch="Fill" Source="pack://siteoforigin:,,,/img/big_bkg.png"/>
  3. </Grid>

代码中对MouseLeftButtonDown事件进行处理:

  1. private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  2. {
  3.     //实现窗体拖动
  4.     this.DragMove();
  5. }

5.3 最小化按钮和关闭按钮

这个功能很简单,直接看代码:

  1. /// <summary>
  2. /// 窗体最小化按钮
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. private void btnMinimized_Click(object sender, RoutedEventArgs e)
  7. {
  8.     this.WindowState = WindowState.Minimized;
  9. }
  10. /// <summary>
  11. /// 窗体关闭按钮
  12. /// </summary>
  13. /// <param name="sender"></param>
  14. /// <param name="e"></param>
  15. private void btnClose_Click(object sender, RoutedEventArgs e)
  16. {
  17.     Environment.Exit(0);
  18.     //this.Close();
  19.     //App.Current.Shutdown();
  20. }

5.4 设置窗体的启动位置

在构造函数中初始化启动位置,计算屏幕宽高,进行居中显示;

  1. public MainWindow()
  2. {
  3.     InitializeComponent();
  4.     //设置窗体的启动位置
  5.     double screenW = SystemParameters.ScrollWidth;
  6.     double screenH = SystemParameters.ScrollHeight;
  7.     double offsetHorizontal = 100;
  8.     double offsetVertical = 200;
  9.     this.Left = (this.Width - screenW ) / 2 - offsetHorizontal;
  10.     this.Top = (this.Height - screenH) / 2 - offsetVertical;
  11. }

5.6 图标设置

准备中……

5.7 设计时正常,运行时图片不显示的问题

准备中……

6 图片按钮

6.1 显示属性

准备中……

6.2 点击事件

准备中……

6.3 响应鼠标动作

准备中……

7 启动游戏

登陆成功后,自动启动游戏的可执行程序,即exe文件

启动另一个可执行程序的方法

  1. System.Diagnostics.Process.Start("FinalCombat.exe");

8 登陆

8.1 校验账户密码

正常产品应该和登陆服务器通信,进行校验,本文demo只使用本地逻辑进行简单的模拟示意:

8.2 接入第三方登陆

使用bmob后端云

9 代码样例

请见仓库FCLoginMain

avatar
  • 文本由 发表于 2020年3月1日22:15:17
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
官方卸载VisualStudio的方法,干净又彻底 .net

官方卸载VisualStudio的方法,干净又彻底

VisualStudio是一款庞大、复杂、和win系统深度关联的软件。但是有的时候为了更新版本或者修复异常,我们这时候会发现,安装过的VS很难完整卸载,卸载后发现总有各种各样的残留。他并不像一般的应用...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:5   其中:访客  3   博主  2
    • avatar 大象饼干 @回复 0

      能开发出这个游戏吗