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

发布于:2025-04-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

1 前言

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

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

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

2 效果展示

在这里插入图片描述

3 技术选型

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

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

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

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

4 设计

4.1 功能拆分

主要分为三大块

UI表现

启动游戏

登陆校验

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

4.2 素材准备

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

5 窗体

5.1 实现异形窗体

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

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

窗体xaml实现如下:

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

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

AllowsTransparency=“True” - 允许透明

WindowStyle=“None” - 去掉边框

OpacityMask=“White” - 设置白色透明

Background=“Transparent” - 设置背景透明

5.2 实现窗体拖动

为Gird订阅MouseLeftButtonDown事件:

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

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

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

5.3 最小化按钮和关闭按钮

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

/// <summary>
/// 窗体最小化按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnMinimized_Click(object sender, RoutedEventArgs e)
{
    this.WindowState = WindowState.Minimized;
}
/// <summary>
/// 窗体关闭按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClose_Click(object sender, RoutedEventArgs e)
{
    Environment.Exit(0);
    //this.Close();
    //App.Current.Shutdown();
}

5.4 设置窗体的启动位置

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

public MainWindow()
{
    InitializeComponent();


    //设置窗体的启动位置
    double screenW = SystemParameters.ScrollWidth;
    double screenH = SystemParameters.ScrollHeight;
    double offsetHorizontal = 100;
    double offsetVertical = 200;
    this.Left = (this.Width - screenW ) / 2 - offsetHorizontal;
    this.Top = (this.Height - screenH) / 2 - offsetVertical;
}

5.6 图标设置

准备中……

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

准备中……

6 图片按钮

6.1 显示属性

准备中……

6.2 点击事件

准备中……

6.3 响应鼠标动作

准备中……

7 启动游戏

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

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

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

8 登陆

8.1 校验账户密码

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

8.2 接入第三方登陆

使用bmob后端云

9 代码样例

请见仓库FCLoginMain


网站公告

今日签到

点亮在社区的每一天
去签到