大家好,感谢邀请,今天来为大家分享一下lol门户网站源码分享的问题,以及和lol网址的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
阅读导航
本文背景代码实现本文参考
1.本文背景
RIOT(拳头)是一家美国网游开发商,成立于2006年,代表作品《英雄联盟》。
本文重点要讲解两个知识点:
CWPF界面展示召唤者信息搜索、概况信息两个界面。
2.代码实现
站长使用.NetCORE3.1创建名为“LoLGoal”的WPF解决方案,并添加3个Nuget包,配置如下:
<?xmlversion=&34;encoding=&34;?>\n<packages>\n<packageid=&34;version=&34;targetFramework=&34;/>\n<packageid=&34;version=&34;targetFramework=&34;/>\n<packageid=&34;version=&34;targetFramework=&34;/>\n</packages>
界面使用的MD控件,本站曾有介绍:介绍。
本文只简单说明部分代码,整体解决方案目录结构如下,源码文末会给出:
2.1引入MD控件样式
文件【App.xaml】
<Applicationx:Class=&34;\nxmlns=&34;\nxmlns:x=&34;\nStartupUri=&34;>\n<Application.Resources>\n<ResourceDictionary>\n<ResourceDictionary.MergedDictionaries>\n<ResourceDictionarySource=&34;/>\n<ResourceDictionarySource=&34;/>\n<ResourceDictionarySource=&34;/>\n<ResourceDictionarySource=&34;/>\n</ResourceDictionary.MergedDictionaries>\n</ResourceDictionary>\n</Application.Resources>\n</Application>
2.2召唤者概况搜索界面
文件【MainWindow.xaml】代码,界面布局简单,给人的感觉整体简洁大方:
<Windowx:Class=&34;\nxmlns=&34;\nxmlns:materialDesign=&34;\nxmlns:d=&34;\nxmlns:x=&34;\nxmlns:mc=&34;\nmc:Ignorable=&34;Height=&34;Width=&34;WindowStartupLocation=&34;\nMouseLeftButtonDown=&34;\nResizeMode=&34;WindowStyle=&34;Background=&FF410A66&34;50&34;/Assets/logo2.png&34;96&34;96&34;White&34;1020&34;5&34;25&34;15&34;{StaticResourceMaterialDesignFloatingHintComboBox}&34;地区&34;{BindingRegion}&34;RU&34;KR&34;BR1&34;OC1&34;JP1&34;NA1&34;EUN1&34;EUW1&34;TR1&34;LA1&34;LA2&34;{BindingSummonerName}&34;15&34;{StaticResourceMaterialDesignFloatingHintTextBox}&34;召唤者&34;Horizontal&34;Center&34;1550&34;取消&34;ButtonSignUp&34;1550&34;搜索&34;ButtonSignUp_Click&34;LoLGoal.View.WindowProfile&34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&34;http://materialdesigninxaml.net/winfx/xaml/themes&34;http://schemas.microsoft.com/expression/blend/2008&34;http://schemas.microsoft.com/winfx/2006/xaml&34;http://schemas.openxmlformats.org/markup-compatibility/2006&34;d&34;600&34;400&34;CenterScreen&34;NoResize&34;None&34;34;>\n<Grid>\n<BorderBackground=&34;Margin=&34;CornerRadius=&34;>\n<StackPanelVerticalAlignment=&34;HorizontalAlignment=&34;>\n<BorderWidth=&34;Height=&34;Margin=&34;BorderBrush=&34;HorizontalAlignment=&34;BorderThickness=&34;CornerRadius=&34;>\n<Border.Background>\n<ImageBrushImageSource=&34;/>\n</Border.Background>\n</Border>\n<TextBlockMargin=&34;FontSize=&34;Text=&34;Foreground=&34;/>\n<StackPanelOrientation=&34;Margin=&34;>\n<StackPanelMargin=&34;>\n<TextBlockText=&34;FontSize=&34;FontWeight=&34;Foreground=&34;/>\n<TextBlockText=&34;FontSize=&34;Foreground=&34;HorizontalAlignment=&34;/>\n</StackPanel>\n<StackPanelMargin=&34;>\n<TextBlockText=&34;FontSize=&34;FontWeight=&34;Foreground=&34;/>\n<TextBlockText=&34;FontSize=&34;Foreground=&34;HorizontalAlignment=&34;/>\n</StackPanel>\n</StackPanel>\n<StackPanelMargin=&34;>\n<TextBlockText=&34;FontSize=&34;Foreground=&34;/>\n<TextBlockText=&34;HorizontalAlignment=&34;FontSize=&34;Foreground=&34;/>\n</StackPanel>\n<GridMargin=&34;>\n<Buttonx:Name=&34;HorizontalAlignment=&34;Style=&34;Width=&34;Click=&34;>\n<materialDesign:PackIconKind=&34;Width=&34;Height=&34;/>\n</Button>\n<ButtonHorizontalAlignment=&34;Width=&34;Content=&34;/>\n</Grid>\n</StackPanel>\n</Border>\n<StackPanelHorizontalAlignment=&34;Margin=&34;>\n<ImageSource=&34;Width=&34;Height=&34;>\n<Image.Effect>\n<DropShadowEffectBlurRadius=&34;ShadowDepth=&34;/>\n</Image.Effect>\n</Image>\n<StackPanelOrientation=&34;HorizontalAlignment=&34;Margin=&34;>\n<TextBlockFontSize=&34;Foreground=&34;Text=&34;Margin=&34;VerticalAlignment=&34;/>\n<TextBlockFontSize=&34;Foreground=&34;Text=&34;Margin=&34;/>\n</StackPanel>\n</StackPanel>\n</Grid>\n</Window>
概况信息展示界面
2.4简单的API接口调用封装
直接上代码看,Key.txt是存储的RIOT开发者Key:
usingSystem;\nusingSystem.Collections.Generic;\nusingSystem.IO;\nusingSystem.Linq;\nusingSystem.Net.Http;\nusingSystem.Text;\nusingSystem.Threading.Tasks;\n\nnamespaceLoLGoal.API\n{\npublicclassApi\n{\nprivatestringKey{get;set;}\nprivatestringRegion{get;set;}\n\npublicApi(stringregion)\n{\nRegion=region;\nKey=GetKey(&34;);\n}\n\nprotectedHttpResponseMessageGET(stringURL)\n{\nusing(HttpClientclient=newHttpClient())\n{\nvarresult=client.GetAsync(URL);\nresult.Wait();\n\nreturnresult.Result;\n}\n}\n\nprotectedstringGetURI(stringpath)\n{\nreturn&34;+Region+&34;+path+&34;+Key;\n}\n\npublicstringGetKey(stringpath)\n{\nStreamReadersr=newStreamReader(path);\nreturnsr.ReadToEnd();\n}\n}\n}
2.5其他代码
查看源码:get_profile_data
2.6以下是站长方便演示、截图,修改的部分文件
可参考源码对比:
文件【API/League_V4.cs】
usingLoLGoal.Model;\nusingSystem;\nusingSystem.Collections.Generic;\n\nnamespaceLoLGoal.API\n{\npublicclassLeague_V4:Api\n{\npublicLeague_V4(stringregion):base(region)\n{\n}\n\npublicList<PositionDTO>GetPositions(stringsummonerId)\n{\n//1、这是正常的API访问\n//stringpath=&34;+summonerId;\n\n//varresponse=GET(GetURI(path));\n//stringcontent=response.Content.ReadAsStringAsync().Result;\n\n//if(response.StatusCode==System.Net.HttpStatusCode.OK)\n//{\n//returnJsonConvert.DeserializeObject<List<PositionDTO>>(content);\n//}\n//else\n//{\n//returnnull;\n//}\n\n//2、这是模拟数据,正常访问LOL服务器,需要注册Key\nstring[]tiers={&34;,&34;,&34;,&34;,&34;,&34;,&34;,&34;,&34;};\nvarrd=newRandom(DateTime.Now.Millisecond);\nvarlst=newList<PositionDTO>();\nfor(inti=0;i<rd.Next(5,20);i++)\n{\nlst.Add(newPositionDTO\n{\nTier=tiers[rd.Next(0,tiers.Length)],\nRank=&34;,\nWins=rd.Next(2,100),\nLosses=rd.Next(2,100),\nQueueType=&34;\n});\n}\nreturnlst;\n}\n}\n}
文件【API/Summoner_V4.cs】
usingLoLGoal.Model;\nusingSystem;\n\nnamespaceLoLGoal.API\n{\npublicclassSummoner_V4:Api\n{\npublicSummoner_V4(stringregion):base(region)\n{\n}\n\npublicSummonerDTOGetSummonerByName(stringSummonerName)\n{\n//1、这是正常的API访问\n//stringpath=&34;+SummonerName;\n\n//varresponse=GET(GetURI(path));\n//stringcontent=response.Content.ReadAsStringAsync().Result;\n\n//if(response.StatusCode==System.Net.HttpStatusCode.OK)\n//{\n//returnJsonConvert.DeserializeObject<SummonerDTO>(content);\n//}\n//else\n//{\n//returnnull;\n//}\n\n//2、这是模拟数据,正常访问LOL服务器,需要注册Key\nreturnnewSummonerDTO\n{\nProfileIconId=DateTime.Now.Second,\nName=SummonerName,\nSummonerLevel=newRandom(DateTime.Now.Millisecond).Next(50,200),\nId=DateTime.Now.Second.ToString()\n};\n}\n}\n}
3.参考
视频一:C1-Login,配套源码:LoLGoal。视频二:C2(1/2)-RESTAPIAccess,配套源码:get_summoner_data。视频三:C2(2/2)-RESTAPIAccess,配套源码:get_summoner_data。视频四:C3-Profile,配套源码:summoner_profile。视频五:C4(1/2)-GetDataFromRIOTAPI,配套源码:get_profile_data。视频六:C4(2/2)-GetDataFromRIOTAPI,配套源码:get_profile_data。
最终源码:本文代码几乎和源码一致(第五和第六个视频配套Github源码【get_profile_data】),站长未注册RIOT开发者Key,所以代码中采用模拟返回数据的方式,只展示了界面效果,并将部分英文改为中文,便于向大家展示此工程。
点击下载源码:get_profile_data
除非注明,文章均由Dotnet9整理发布,欢迎转载。转载请注明本文地址:https://dotnet9.com/7026.html
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
