在本系列第一部分,我们创建了程序框架,现在我们创建游戏的界面,项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 首先在Views目录下添加一个内容页面,名称为Game.xaml: 然后,在AppShell.xaml中增加这个页面导航: <TabBar> <ShellContent Title="游戏" Icon="icon_about.png" Route="Gam…
最近项目中需要移动客户端,由于团队基本上使用.Net产品线,所以决定使用Xmarin进行开发,这样技术路线统一,便于后期维护.官网上是这样介绍的" Xamarin 允许你使用 .NET 代码和特定于平台的用户界面生成适用于 Android.iOS 和 macOS 的本机应用. Xamarin.Forms 允许你使用采用 C# 或 XAML 编写的共享 UI 代码生成本机应用." 本文以数独游戏开发为例,总结一下Xamarin开发的基本过程. 环境准备 开发Xamarin应用需要安装Vi…
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 保存进度是移动应用的基本功能,在应用的使用过程中会有各种各样的可能导致使用中断,再次回到应用时,应该恢复到中断前的状态.前面我们已经初步完成了数独游戏,但还不具备状态保存的功能,现在我们增加这个功能,将游戏进度保存到本地文件中. 首先确定在什么地方保存和恢复状态.在Xamarin的View退出时会触发OnDisappearing事件,在这个事件中可以保存游戏的进度.在Vie…
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 现在我们希望为应用增加更多的功能,比如记录每个完成的游戏,可以让用户自己添加新的数独游戏等等,这些功能需要数据库的支持.我们使用Sqlite数据库保存游戏的数据.Sqlite是基于文件的单机关系型数据库,使用起来非常方便,首先安装程序包sqlite-net-pcl,可以在Visual Studio 2022中使用Nuget管理器安装最新版本,然后,添加POCO类的定义和数据…
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 现在我们增加添加新游戏的功能,创建一个页面,编辑初始局面,并保存到数据库. 我们首先了解一下Xamarin中页面如何跳转.首先,需要为跳转的页面增加路由,这需要在AppShell中增加下面的代码: public AppShell() { InitializeComponent(); Routing.RegisterRoute(nameof(GameEdit), typeof…
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们已经完成了游戏的大部分功能,玩家可以玩预制的数独游戏,也可以自己添加新的游戏.现在我们实现展示已完成游戏列表页面,显示用户已经完成的游戏列表,从这个列表可以进入详细的复盘页面. 前面的页面我们采用的是传统的事件驱动模型,在XAML文件中定义页面,在后台的cs文件中编写事件响应代码.采用这种模型是因为很多页面需要动态生成控件,然后动态改变这些控件的属性,事件驱动模型在…
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果我们数组中有10个游戏,那么很快就会遇到重复的游戏,有没有办法在现有的基础上生成更多的游戏呢?我们看一下下面两个游戏: 看上去是不同的游戏,但仔细分析一下就会发现如果从计算机角度看,其实是相同的游戏.如果我们仔细分析一下,就会发现,在数独游戏中1-9的数字都是独立的符号,没有数学中数字的意义,如果将…
一.前言 我姥姥是一名退休数学老师,一直很喜欢玩数独游戏.我以前答应过她要给她写一个数独游戏.本来计划是写一个Android应用的,但恰好我学了好长时间iOS开发一直没做什么"大项目"练手,并且小姨给姥姥买了一个iPad玩.于是计划利用寒假过年的前五天,给姥姥用Swift写一个iPad上的数独游戏.现在(2月24日)游戏已经基本完成,于是记录下编写的思路.设计过程以及遇到的问题等. 二.需求分析 我的初步想法是做一个SingleView的应用足矣,但后来仔细分析加上我姥姥的要求,才发现…
最近研究了一下android,写了一个数独游戏,具体如下: 游戏界面需要重写一个ShuduView继承View, 然后自定义一个Dialog: 1.需要继承 Dialog 类, 2.并要定义一个有参构造函数(因为父类里面没有无参构造函数) 3.重写 onCreate方法,一切操作将在此方法进行 流程: 为每个按钮添加监听事件, 刷新九宫格里的数字,也就是重新绘制画面(在view类中调用 invalidate();), 更新备选数字数组 ( 每次修改之后都得 进行重新计算 不可用的值   calc…
一.游戏界面涉及到的功能点 1)数独格子的建模 (1)绘制数独格子要考虑到标记功能 所以要在每个格子内预先塞入9个标记数字,仅数独格子算下来就有9*9*9=729个格子且存在大量嵌套(这导致我在操作Storyboard时每一个修改都要等待至少20s) (2)数独格子内部的Tag标记 为了方便编程时获取相应格子的View,需要把每个格子打上Tag (3)数独格子的初始化 模型初始化包括背景色.填数操作 和 边框粗细的调整 2)“选数视图”与“选标记视图”以及“其他按钮”的建模 3)填数的游戏游戏规…