html5网站模板,电商网站建设费用,阿里巴巴出口贸易平台,十大免费excel网站文章目录 一、项目概述二、开发环境三、详细设计3.1、数据库设计3.2、普通模式3.3、随机模式3.4、关卡列表 四、运行演示五、项目总结六、源码获取 一、项目概述
Android一笔画完是一种益智游戏#xff0c;玩家需要从起点开始通过一条连续的线#xff0c;将图形中所有的方块… 文章目录 一、项目概述二、开发环境三、详细设计3.1、数据库设计3.2、普通模式3.3、随机模式3.4、关卡列表 四、运行演示五、项目总结六、源码获取 一、项目概述
Android一笔画完是一种益智游戏玩家需要从起点开始通过一条连续的线将图形中所有的方块都连接起来而且不能重复经过已连接的线段。游戏主页有普通模式、随机模式和设置入口普通模式包含8个大关卡除了第1大关卡有10小关之外其他的大关卡都有30小关难度递增地图丰富。
开始游戏后可以使用左下角的显示功能显示正确的路径也可以使用右下角的刷新功能清除已经走不通的路径还能直接跳过本关进入下一关。对于普通模式已经通关的小关卡颜色会加深与未通过的关卡区别开来。随机模式采用深度优先遍历算法和全组合算法生成地图如果在设置中打开后台寻路会持续生成新的地图备用。随机模式还能自定义地图的行数、列数以及障碍数可以设置跳过已通过的查看通关记录。在设置中打开背景音乐会给游戏增添更多趣味性。
二、开发环境 三、详细设计
3.1、数据库设计
MySql类是一个继承自SQLiteOpenHelper的自定义类主要用于管理游戏中的数据存储和查询操作。通过继承SQLiteOpenHelper类可以方便地进行数据库的创建、更新和查询等操作。在具体的游戏开发中可以根据需要使用这些方法来实现对游戏数据的存储和读取。 public void insertPassedYibi(Bean_Road road){if(checkPassedYibi(road) || roadnull) return;ContentValues valuesnew ContentValues();values.put(rows,road.getRows());values.put(columns,road.getColumns());values.put(difficulties,road.getDifficulties());values.put(road,road.getRoadString());getReadableDatabase().insert(passedYibi,null,values);}定义的构造方法用于初始化数据库的名称和版本号并调用父类的构造方法。onCreate()方法在数据库第一次创建时调用用于创建数据库表格。代码中创建了三个表格分别是passedYibi、savedYibi和errorYibi。onUpgrade()方法在数据库版本号发生变化时调用用于更新数据库结构。代码中先删除原有的表格然后重新调用onCreate()方法创建新的表格。 checkErrorYibi()方法检查errorYibi表格中是否存在符合条件的数据记录。根据传入的参数进行查询并返回查询结果是否存在的布尔值。insertErrorYibi()方法向errorYibi表格中插入新的数据记录。在插入之前会先调用checkErrorYibi()方法进行重复性检查。checkPassedYibiWithRoad()方法根据roadstring参数检查passedYibi表格中是否存在符合条件的数据记录。checkPassedYibi()方法根据传入的Bean_Road对象检查passedYibi表格中是否存在符合条件的数据记录。insertPassedYibi()方法向passedYibi表格中插入新的数据记录。在插入之前会先调用checkPassedYibi()方法进行重复性检查。getAllPassedYibi()方法获取passedYibi表格中的所有数据记录并返回Cursor对象。cleanPassedYibi()方法清空passedYibi表格中的所有数据记录。checkSavedYibi()方法根据传入的Bean_Road对象检查savedYibi表格中是否存在符合条件的数据记录。
3.2、普通模式
RoadFragment类是一个Fragment碎片类用于显示游戏中普通模式的地图主要实现了道路界面的初始化、按钮点击事件的处理、关卡和地图位置的管理以及通过关卡和帮助功能的实现。它使用了Grid_Yibi类来显示道路的网格并通过接口Grid_Yibi.yibiListener来处理与网格相关的操作。 Overridepublic void passed(Bean_Road road) {if(roadnull) return;if(!firstPassed){firstPassedtrue;getMySql().insertPassedYibi(road);ViewUtil.getAskDialog( ,恭喜通过,new OtherUtil.OnCallBackListenerImplBoolean(){Overridepublic void OnCallBackFirst(Boolean... params) {goNext();}},下一关, 算了);}}在initView()方法中初始化界面元素并设置按钮的点击事件。设置返回按钮点击事件时调用onBackClick()方法设置刷新按钮点击事件时调用grid_yibi.refreshGrid()方法设置帮助按钮点击事件时根据ishelping标志调用grid_yibi.getHelp()方法或者grid_yibi.refreshGrid()方法设置主页按钮点击事件时跳转到MainActivity中的IndexFragment页面。 在goNext()方法中检查当前关卡和地图的位置是否有效如果有效则进入下一关卡或下一个地图的界面。如果已经是最后一关则显示提示信息。在checkPosition()方法中检查当前关卡和地图的位置是否有效。如果有效则返回true否则显示获取地图失败的提示信息并返回false。在getCurRoad()方法中根据当前关卡和地图的位置获取对应的Bean_Road对象。如果位置有效则返回该对象否则返回null。在passed()方法中当通过一个关卡时会调用该方法。首次通过时将通过的道路记录插入数据库并显示恭喜通过的对话框。点击对话框中的下一关按钮时调用goNext()方法进入下一关。在setIsHelping()方法中根据传入的isHelping参数设置ishelping标志并根据该标志设置帮助按钮的背景图片。在isHelping()方法中返回ishelping标志的值。
3.3、随机模式
RandomRoadFragment类实现了随机模式游戏界面的初始化、状态检查和网格道路的生成。主要包含以下功能initView() 方法用于初始化视图。首先从偏好设置中获取行数、列数、难度等参数并进行相应的初始化操作。然后设置按钮的点击监听器并对一些视图元素进行状态设置和事件处理。最后根据条件进行一些异步操作包括更新文本视图的内容和执行定时任务。最终返回 true。 checkPassedView() 方法用于检查已通过的视图。根据给定的道路对象判断该道路是否已通过并相应地设置相关视图的可见性。onDetach() 方法在 Fragment 解除绑定时调用用于清除动画和道路队列。onDestroyView() 方法在销毁视图时调用用于移除定时任务。 initGirdRoad() 方法用于初始化游戏中的网格道路。首先重置一些状态变量然后根据条件选择从数据库中获取道路数据或从队列中获取道路数据或者直接生成新的道路数据。接着对道路进行验证和处理并根据结果更新相关视图的显示最后保存道路数据和相关信息。 3.4、关卡列表
DifficultyDetailFragment类是一个BaseFragment的子类。有三个成员变量分别是difficultyHint用于显示关卡提示信息的TextView、returnButton返回按钮的View和recyclerView用于显示关卡详细信息的RecyclerView。实现了一个关卡详细信息的界面其中包括关卡提示信息、返回按钮和用于显示关卡详细信息的列表视图。在视图初始化时根据传递的参数设置相关视图的内容和适配器。同时提供了处理新参数和返回结果的方法。 Overridepublic void onActivityResult(int requestCode, int resultCode, Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if(data!nulldata.getExtras()!null) getNonNullArguments().putAll(data.getExtras());runOnUiThread(this::initView);}getLayoutId()方法重写了BaseFragment中的方法用于返回布局文件的ID。initView()方法重写了BaseFragment中的方法用于初始化视图。首先获取当前关卡的位置position然后设置返回按钮的点击监听器。接下来设置recyclerView的布局管理器为GridLayoutManager并指定列数为5。然后根据position的值设置适配器如果position在合法范围内则使用Adapter_difficulty_detail作为适配器否则显示提示信息。最后设置关卡提示信息的可见性为可见并设置对应的文本内容。最终返回true表示视图初始化成功。onNewArguments()方法重写了BaseFragment中的方法当有新的参数传递给Fragment时调用。在该方法中调用initView()方法初始化视图并将isLoaded标志设置为true。onActivityResult()方法重写了BaseFragment中的方法当Fragment的目标Activity返回结果时调用。在该方法中判断返回的Intent和Bundle是否为空如果不为空则将其中的参数添加到Fragment的参数中。然后在主线程上调用initView()方法重新初始化视图。 四、运行演示 Android Studio实现一笔画完小游戏 五、项目总结
享受开发过程并保持耐心和持续学习开发一款成功的游戏需要时间和努力但最终的成果将会令人满意。
六、源码获取 点此直接下载源码Android Studio实现一笔画完小游戏 这有你错过的精彩内容Android Studio实现五子棋小游戏Android Studio实现知乎日报AppAndroid Studio实现贪吃蛇小游戏Android Studio实现文艺阅读AppAndroid Studio实现多功能日记本