利用Androidvisual studio编写c的简单数独游戏,请问怎样实现继续游戏呢?

404-页面不存在31831人阅读
【Android微知识点】(3)
本文为原创,授权公众号:独家代理原创发布。
转载请标明出处:
相信大家在使用Android Studio的时候,或多或少的会使用一些插件,适当的配合插件可以帮助我们提升一定的开发效率,更加快乐。例如:
可以帮助我们从Gson转化为实体类
可以帮助我们更加方便的使用butterknife
可以帮助在IDE里面完成英文-&中文的翻译
有句话叫做授人以鱼不如授人以渔,不能一直跟随着别人的脚步去使用插件了,有必要去学习编写插件,当自己有好的创意的时候,就可以自己实现了。So,本文的内容是:
自己编写一个Android Studio插件
ok,其实编写插件并不难,官方也有详细的文档,所以你也可以选择直接阅读下文学习:
为了文章有一定的流畅性,决定以ECTranslation作为编写Android Studio插件的例子。
我为什么选这个呢?因为创意好,实用并且代码简单。
贴一个今天这个插件的最终效果图:
注:效果与ECTranslation基本一致,本文仅用作学习,不造轮子,如果需要使用,直接使用ECTranslation即可。
二、准备工作
首先需要安装IntelliJ IDEA
下载网址:
下载好就可以了~~
然后安装,运行,点击create New Project:
按照上图进行选择,如果没有SDK,则点击New新建一个即可。
然后点击Next,输入项目名称选择位置,就可以点击finish了。
项目的结构如下:
src目录下主要用于存放我们编写的代码。
这样准备工作就结束了~~
(1) 关键知识
编码实际上核心的一个类叫做AnAction,可以直接选择NEW-&Action,如下图:
然后填写一些相关信息:
需要填写的属性如下:
ActionID:代表该Action的唯一的ID,一般的格式为:pluginName.ID
ClassName:类名
Name:就是最终插件在菜单上的名称
Description:对这个Action的描述信息
然后往下,选择这个Action即将存在的位置:
我们选择的是EditMenu,右侧选择为first,即EditMenu下的第一个,效果如图:
再往下就是制定快捷键了~~
都填写完成就可以点击OK了。
点击ok之后,可以看到为我们生成了下类:
public class TranslateAction extends AnAction {
public void actionPerformed(AnActionEvent e) {
此外我们刚才填写的信息,也在plugin.xml中完成了注册,大家可以进去看一眼,actions的标签中,
当我们点击菜单的时候,就回触发actionPerformed()方法。
那么这么看,我们在这个方法中只要完成三件事:
获得当前选中的单词
调用相关API得到单词的意思
通过一个类似于PopupWindow来显示
当然,为了尽快的测试,你可以先在里面弹一个对话框,例如如下:
public void actionPerformed(AnActionEvent event) {
Messages.showMessageDialog("Hello World !", "Information", Messages.getInformationIcon());
预期效果是点击Tranlate菜单,或者按快捷键会弹出一个提示对话框。
那么点击Run:
然后它会默认启动一个新的IntelliJ IDEA的界面,你可以随便新建一个项目,进入以后,你会发现Edit下多了一个Translate菜单,点击即可弹出我们设定的对话框:
ok,测试通过就放心了~
获得当前选中的单词
调用相关API得到单词的意思
通过一个类似于PopupWindow来显示
剩下的就是功能性的API了~
(2) 获得当前选中的单词
public void actionPerformed(AnActionEvent e) {
final Editor mEditor = e.getData(PlatformDataKeys.EDITOR);
if (null == mEditor) {
SelectionModel model = mEditor.getSelectionModel();
final String selectedText = model.getSelectedText();
if (TextUtils.isEmpty(selectedText)) {
是不是觉得API很陌生,恩,我也觉得很陌生,关于API这里介绍其实没什么意义,本文主要目的是让大家对自定义插件有个类helloworld的认识,至于插件里面的代码涉及到的API等到大家需要编写插件的时候,再详细学习就好了,现在就不要浪费精力记忆这些东西了。
上面的代码就是获得选中的文本,通过一个Editor,然后拿到SelectionModel,再拿到selectedText,从字面上还是蛮好理解的。
拿到选中的文本之后,应该就是去查询该单词的意思了,查询呢,ECTranslation用的是youdao的Open SDK,其实也很简单,就是拼接一个url,然后等着解析返回数据就好了。
(3)调用相关API得到单词的意思
有道API的地址:
大家如果想要做单词翻译,可以看下,非常简单。
涉及到的代码:
String baseUrl = "/openapi.do?keyfrom=Skykai521&key=&type=data&doctype=json&version=1.1&q=";
HttpUtils.doGetAsyn(baseUrl + selectedText, new HttpUtils.CallBack() {
public void onRequestComplete(String result) {
Translation translation = gson.fromJson(result, Translation.class);
showPopupBalloon(mEditor, translation.toString());
HttpUtils就不贴了,就是直接开了个线程,通过HttpUrlConnection去访问网络,大家的项目中或者通过搜索引擎,代码一搜一堆。
baseUrl就是有道的url,加上我们选中的单词就是完整的url了,然后通过http访问,callback回调出返回的字符串,这里返回的是json类型的字符串。
baseUri是:
我们根据返回的json字符串生成了一个类Translation;
然后通过Gson转化为Translation对象。
ps:拿着上面的baseUrl后面跟一个任何单词,直接访问浏览器就能看到返回的json数据了,这里大家天天写接口,类似的步骤比我肯定还熟悉。
好了,有了返回的数据以后,直接通过一个类似popupWindow展现即可。
(4)通过一个类似于PopupWindow来显示
涉及到的代码:
private void showPopupBalloon(final Editor editor, final String result) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
JBPopupFactory factory = JBPopupFactory.getInstance();
factory.createHtmlTextBalloonBuilder(result, null, new JBColor(new Color(186, 238, 186), new Color(73, 117, 73)), null)
.setFadeoutTime(5000)
.createBalloon()
.show(factory.guessBestPopupLocation(editor), Balloon.Position.below);
这个API,恩,我copy的源码,依然是不求记住,知道这有个类似的功能即可。
简单看一下,是通过创建一个JBPopupFactory,然后通过它创建一个HtmlTextBalloonBuilder,通过这个builder去设置各种参数,最后show。
ok,对于一个入门的例子,不要太强求对插件中这些API的掌握,还是那句话,等需要写了再去查,需要什么功能,哪怕到对应的插件中去copy源码都可以,当然也有文档:
有兴趣的可以整理各种类型的插件,比如弹出popupWindow,生成代码,生成文件类别的,然后对相关的API进行收集与整理。
这样代码写完了,先测试一下,点击RUN,然后看效果~
我们这里肯定是测试没问题的,效果图就是开始的那个gif.
如果没有问题,就可以去部署和发布我们的插件给别人去使用了。
这两部也非常简单。
四、部署插件
(1)填写插件相关信息
打开项目文件的plugin.xml,如下图:
在里面填写id,name,version等。。。记得随便填一下~
然后,点击build-&prepare plugin…,如下图:
会在项目的根目录生成一个jar,如图:
这个jar就可以用于安装了。
(2)安装插件
打开Andorid Studio,选择Preferences -& Plugins -& Install plugin from disk,选择我们生成的jar即可,如图:
点击安装,然后重启即可。
好了,重启完成就可以在EDIT下看到Translate菜单了,选中单词,点击菜单或者快捷键都能实现翻译了。
如果你有兴趣,赶紧编写一个插件自己玩吧。
当然,还可以把我们的插件发布到仓库,支持在plugin中搜索安装,参考:
就是注册账号,提交jar,填写信息,等着审核就可以了。
终于到了总结的环节,这么长的文章其实编写插件总结起来就几句话。
下载Intellij IDEA,新建一个Intellij IDEA plugin的项目
然后在里面new Action以及编写API
点击prepare plugin生成jar,这个jar就可以用来安装了。
恩,就是这么简单,实践起来会比较麻烦一点,等成功以后,回过头来总结,发现步骤其实就那么几个步骤~~对于实际的Action相关的API,等你在编写相关插件的时候,参考别的类似插件,查看官方文档都可以。
微信公众号:
- 不要错过每一篇干货 - 支持投稿
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
积分:48483
积分:48483
排名:第58名
原创:201篇
评论:14541条
长期为您推荐优秀博文、开源项目、视频等,进入还有好玩的等着你,欢迎扫一扫。
请勿重复加群,Thx
文章:11篇
阅读:202578
文章:10篇
阅读:117401
文章:67篇
阅读:5824365《数独游戏的设计与实现》_android开发_ThinkSAAS
《数独游戏的设计与实现》
《数独游戏的设计与实现》
内容来源: 网络
数独游戏的设计与实现
一、数独游戏简介
数独游戏,是一种数学智力拼图游戏,是“独立的数字游戏”的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大。
数独游戏可以训练玩家的逻辑推理能力,不少教育者皆认为数独是锻炼脑筋的好方法。
其规则如下:
1.游戏会从一个部分带有数字的九宫格开始。 在9×9的大九宫格(即3格宽×3格高)方阵里,每一格又细分为一个小九宫格。
2.游戏开始,已给定若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。
3.填数字时必须满足以下条件:在空白的小格子里填上1~9中的数字,使得每个数字在“九宫格”的每行、每列、每个小九宫格中均只出现一次。
二、游戏逻辑分析:
1.游戏中的每个格子可能的数字有1-9。
2. 游戏开始显示的数字,通过一份完整的数独,将部分格子设为空白,得到游戏初始值。
3.游戏中的每个空白格子可以填写的数字是:同一行未出现的数字,同一列未出现的数字,同一个3x3的九宫格中未出现的数字三部分的交集。
4.游戏中的每个格子的三种状态:答案数字(即正确的数字),初始化数字(即游戏开始是数字,显示有数字或者空白),当前数字(即玩家填写前,
后的数字)。
5.游戏完成的条件是满足规则中说明的情况。
三、可行性分析
1.技术可行性
(1)整个系统利用Java + Eclipse + Android
开发并运行,本身开发难度不大,加之Eclipse软件具有Android插件包,此外,这几款软件的
安装需要进行一些环境变量的配置,但是有很多的相关资料与教程可以查找借鉴,所以无论是从安装、配置还是最后的开发、运行其实际难度都
不是很大。
2.经济可行性
(1)对于任何一个系统而言,前期的开发投入都相对比较大,花费相对比较多。其后期花费则相对少,系统本身占用空间较小,由于Android的
开放性,所以,需添加功能,游戏的更新比较简单方便,不需要太多的人力物力来维持维护,这就提高了管理者的工作效率,降低了开销,因此在
经济可行性方面还是有很大优势的。
3.操作可行性
(1)本系统操作简单,且界面效果相对还行并且加入了大量人性化设计理念,使玩家更加容易上手,简单的点击书写即可。。因此,该游戏的使
用十分简便。
四、游戏设计(先用Eclipse建立Android程序开发项目)
1.绘制游戏界面,大九宫格和小九宫格,(小九宫格用浅绿色线条分割,大九宫格用暗红色线条分割)。
【ShuduView.java中】
(1)用屏幕的宽width和高height分别除于9即可得到九宫格中每个单元格的宽度和高度。
(2)用paint中的方法生成用于绘制背景色的画笔并设置画笔的颜色和设置横向、纵向的单元格线的颜色。
(3)用canvas中的方法绘制背景色并绘制横向单元格线和纵向单元格线(即绘制九宫格)。
(4)在values文件夹中新建colors的XML文件并设置好四种颜色,以后的颜色设置就可以直接调用这里的颜色。
【colors.xml】
2.游戏格子中数字绘制,且字体在格子中居中显示。
【ShuduView.java中】
(1)用paint中的方法绘制数字,设置数字的颜色为蓝色并把数字设置为空心,字体居中显示。
(2)用FontMetrics fm = paint.getFontMetrics();即FontMetrics方法真正实现文字在矩形框当中居中显示。
3.游戏交互事件处理,点击小格子,提示玩家选择填写的数字,并将选择的数字绘制到所点击的格子中。
【ShuduView.java和keyDialog.java中】
(1)用onTouchEvent();函数实现单点触摸事件,即鼠标(手)触动手机屏幕事件,当手触动该view时该函数会被调用onTouchEvent
(MotionEvent event)中的方法获取当前点击的单元格坐标 。
(2)调用keyDialog方法实现提示玩家选择填写的数字的自定义对话框,用setListeners();方法为对话框当中所有的按钮设置监听器,即可实现
将选择的数字绘制到所点击的格子中。
4.自定义对话框的实现过程,从提示到消失。
【keyDialog.java中】
(1)新建Dialog类,实现自定义的对话框功能。
(2)用Dialog();构造函数保存着对话框当前单元格已经使用过的数字,当一个对话框第一次显示的时候调用其onCreate方法实现提示功能,
最后用dismiss();方法取消对话框的显示。
5.具体的逻辑处理的实现过程。
【Game.java】
(1)新建String str存储字符串数据,存储数独游戏中要用到的数字。
(2)用fromPuzzleString(String src)方法根据一个字符串数据,生成一个整形数组(将字符串常量转换为数字存入数组中),即所谓的数独
游戏的初始化数据。
(3)用calculateAllUsedTiles()方法计算所有单元格对应的不可用数据;用calculateUsedTiles(int x, int y)方法计算某一单元格当中已经
不可用的数据;用getUsedTilesByCoor(int x,int y)方法取出某一单元格当中已经不可用的数据;用setTileIfValid(int x, int y, int value)
方法接收KeyDialog中点击的数字。
(4)用setTile(x, y, value)方法
6.最后根据游戏完成的条件判断游戏是否完成。
【MainActivity.java】
(1)在主类MainActivity中调用ShuduView对象。
(2)根据规则完成数独游戏。
五、总结与展望
1.问题与解决方法
(1)一开始画九宫格里面的 横线,纵线,每次画出的线都达不到想要的效果,尝试了很多次也没有办法。后来上网搜了一下,原来需要画两
条线之间隔1像素的位置且颜色也要搭配好才能达到效果。
(2)用paint中的方法绘制数字时,设置字体居中的方法很容易,但却无法实现文字在矩形框当中居中显示,上网搜也搜不到解决方法。后
来在观看Android数独开发视频中,也学习到原来是用FontMetrics方法真正实现文字在矩形框当中居中显示。
(3)最后在自定义对话框中,也不知道如何显示当前单元格要提示输入的备选数字。这也是在视频教学中得到了解决方案,就是先放9个按钮
上面分别是数字1-9,然后遍历整个九宫格分别在横向和纵向找到出现过的数字,最后把对话框中出现过的数字按钮屏蔽不显示,这样就得到
对话框中提示的备选数字。
2.心得与体会
(1)虽然上面的这些问题都是一些很小方面的问题,但是Android程序开发过程不就是会遇到一系列的小问题吗?如果连一个个的小问题都
解决不了的话,还指望着我们去解决一些大问题?所以我觉得遇到问题是很正常的事,只要我们把这些问题解决好,就能把程序大概的写出来。
虽然说写出的程序不是很完美,但这已经是迈向成功的第一步了。所以说,开发过程有问题不可怕,可怕的是找不到自己程序开发过程中存在
的问题。
(2)在该数独游戏的开发过程中遇到过不少困难,虽然解决起来不是那么容易,但是在这其中学到了很多知识,同时也提升了我对Android
程序开发的兴趣,希望能够在这方面有更进一步的发展。 最大的不足是,这次的程序开发由于时间的限制使得程序开发得过于简单,其实该游
戏在现有基础上还可以开发其他功能,不仅能够使界面更加美观,而且可以增加其他功能,比如设置游戏难度级别(简单,中等,困难);设
置各级别游戏关卡数 ;设置游戏背景音乐;设置游戏主界面(选择菜单分为各项功能:重来功能、下一关功能、重出题功能、解题功能、难易
程度选择功能以及退出功能等等。);来提高游戏趣味性。总之一句话,循序渐进,脚踏实地。
正如那句名言所云:如果你不能成为最好的那个,那你就成为最努力的那个吧!
附:功能截图一张
PHP开发框架
开发工具/编程工具
服务器环境}

我要回帖

更多关于 visual studio编写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信