1. 5个完全免费的黑科技软件,令人惊叹
【Windows超级管理器】是一个功能极其强大的功能强大的系统管理软件,除了提供系统信息的检测外,还提供了自启管理,用户操作痕迹清理,硬盘信息分析和保护、文件粉碎等系统实用功能,另外还有几十个系统小工具包括硬盘测速、修改Host、批量改名等热需求功能。
最重要的是,这个系统管理神器不会像某卫士,某管家一样给你塞各种弹窗以及乱七八糟的营销广告,非常干净,不仅适合开发者使用,小白用户上手也没有什么难度。
Windows上的时钟应用其实多到数不胜数,功能也大同小异。所以一个款优质的桌面时钟应用就轮到拼颜值了。最近发现了一个UI设计很好看的桌面时钟,界面极其简洁,而且和Win10以上系统的设计风格很搭,另外提供了很细致的功能设置,包括可显示一些系统信息譬如开机时间,CPU,内存占用率,当下网速等。
想必不少人会有音频剪辑的需求,其实这类需求我建议的第一选择是Adobe家的《Audition》,极其专业的音频剪辑工具。不过它家正版的软件都是非常昂贵,而且体积也比较多,动不动就一个G以上。其实作为普通用户只想简单剪辑下音频,犯不着付出这么大的代价。另外一款免费开源的跨平台、免费开源的录音、编辑声音编辑器《Audacity》即可满足一般的编辑需求。
《Audacity》提供了理想的音乐文件功能自带的声音效果包括回声,更改节拍,减少噪音,而内建的剪辑、复制、混音与特效功能。虽然说UI设计是简陋了点,但实际上功能是很强的,最重要的是开源且完全免费就可以用到如此专业的音频剪辑工具,香爆了。
【鸭力巨大】是一个免费的图片/视频在线压缩神器,图片压缩方面,支持JPG、PNG、GIF格式的图片压缩,另外可以选择有损压缩、无损压缩以及自定义高级模式进行图片压缩,并可以根据自己的需求调整图片大小。压缩的算法很给力,就算选择了有损压缩,测试一张5M大小的原图,压缩后剩下937KB左右,可见下方的对比图,不放大的情况下,肉眼不会发现很明显的压缩痕迹,细节还是保持不错的。当然,如果你想追求更高的画质就用无损压缩吧。另外图片压缩限制最大支持100M,基本上可以满足大多数用户的需求。当然了,视频压缩的就有些鸡肋了,虽然支持mp4、avi、flv、mov等多种格式视频,但也限制100M内,对于视频来说着实太小了。
在后台有不少网友留言问有无完全免费的思维导图工具,不要那种打着免费的旗号但实际却要内购才能解锁一些功能。
其实此前整理过一期免费无套路的《分享3个免费好用的思维导图工具》,包括网络脑图,gitmind,freemind等等,具体可见上述文章。那么今天继续分享多一个完全免费思维导图工具【知犀思维导图】,有在线版和客户端版本。模式基本跟gitmind类似,但个人认为颜值上【知犀思维导图】更小清新一些。
功能上基本上和主流的思维导图工具差不了多少,节点可以自由无限添加,逻辑图也提供了各种不同场景下的主题,包括思维风暴,鱼骨图,组织结构图,气泡图,桥图等十几种样式。另外还提供了非常多分类的思维导图模板,都是网友们自行制作出来的优质模板,你可以直接套用来修改。导出提供图片,PDF,Word文档,txt以及Markdown五种方式。
2. 免费的java快速开发平台有哪些
一、方正集团
二、ES2007
1、ES2007介绍
方正飞鸿智能信息平台(Fix ES2007)是方正集团推出的国内领先企业基础架构中间件平台。Fix ES2007平台基于SOA架构体系,结合数据建模、业务建模、可视化流程引擎、动态表单设计等多种实现工具,其柔性的特点,保障了基于ES2007平台开发的系统可在.net平台与j2ee平台上无缝的切换运行,是企业应用开发的一个高效、强大、开放的开发工具。
2、ES2007技术特点
•高效的平台业务逻辑扩展
•组织机构设置和权限机制
•强大的工作流引擎和任务监控,协同机制
•应用部署以及模块运行,升级,管理机制
•强大的工作流引擎
•图形化工作流程设计
•所见即所得表单设计
•完善安全的权限分配体系
3、产品特性
•大并发海量数据的支撑
•即时通讯工具的外网通讯
•即时通讯工具的平台开发性
•全面的SOA 支持
•流程引擎标准化、性能更优
•全面的数据库支持(Oracle,Sqlserver,DB2,Sybase,Mysql)
•全面的WEB 服务器支持(iis,tomcat,websphere,weblogic,jboss,glassfish,apusic)
•全面的AJAX 技术的运用
•全面的浏览器支持(IE,FireFox,Chrome)
•富客户端技术的支持(Flex,silverlight)
•平台接口更标准,更易用
4、产品组件
•业务逻辑 建模工具 Studio
•流程引擎 Workflow
•表单设计 Formdesign
•数据库工具 DTS
•即时通讯 MSQ
•统一界面管理 Portal
•多种主题管理 Theme
•快速高效的代码开发框架 SDK
•企业应用集成EAI
•业务流程管理BPM
•面向服务架构 SOA
5、特色创新
• 快速开发性
开发效率提升高达70%、10 分钟可以完成一个流程全过程开发、1 天可以完成一个小型应用(如OA 办公系统)。
• 企业信息管理特征组件
封装了大量的企业信息管理不同行业的特征组件和业务模型,让使用者更关注于业务,从而使其从技术中解放出来,能迅速的构架用户的业务系统。
• 跨语言
可以无缝的在C#和JAVA 语言中切换,可以顺利的在.Net 和J2EE 平台上切换,是全球唯一款支持跨语言的中间件平台。大多数软件公司在为用户服务时往往会被用户左右,而用户很多情况会对需求发生变更,而对语言的变更也不在少数,而一旦发生,对与开发商来说将是致命的,因为语言是不互通的,换一门系统的开发语言,将会把系统的工作量放大两倍,而使用本平台,这些问题将不复存在。
• 多数据库
支持主流关系型数据库,如Oracle,Sqlserver,DB2,Sybase,Mysql。
• 跨平台
支持多操作系统,如WINDOWS,LINUX,UNIX,使用户部署时不用再关心终端服务器,只需要关注用户系统的业务开发即可。
6、案例
【支持的平台技术和产品】
FIX ES2007业务基础平台支持广泛的平台、系统和应用技术,构建在ES2007业务平台上的业务系统,具有最广泛的技术兼容性和可扩展性:
•操作系统支持
支持如下网络操作系统:NT,UNIX,Linux等。
支持如下客户端:WindowsXP及更高版本,浏览器IE6.0及更高版本。
•数据库支持
支持如下数据库接口:ODBC,JDBC,BADO。
支持Oracle 9i 及更高版本、SQL Server 2000及更高版本等数据库。
•组件和总线支持
支持如下组件和总线标准:COM,ActiveX,OLE,.Net。
•分布计算和服务支持
支持如下分布计算和服务技术:DCOM,EJB(J2EE)。
支持如下分布计算支撑环境:.Net、BEA WebLogic、IBM WebSphere等。
•Web服务支持
支持如下Web服务支持技术:Serverlet,ISAPI/NSAPI。
支持如下主流Web服务器产品:MS IIS、BEA WebLogic、IBM WebSphere等。
•网络和应用协议
支持多种应用协议,包括:
通讯协议:HTTP、TCP/IP
邮件协议:SMTP,POP3
应用协议:DCOM、EJBIIOP、EJBRMI
基于FastUnit平台实现快速开发:可视化、无代码、快速开发。
三、J-HI是一款JAVA WEB应用软件快速开发开源平台,
主要服务于软件企业和传统行业企事业单位信息中心的开发人员,为他们提供一套完整的一站式的JAVA WEB应用软件快速开发解决方案。
平台包括如下几个部分:
1、J-HI平台集成环境:J-HI团队开发了一个集成开发环境J-HI Studio,在此集成开发环境之上,开发人员能够快速搭建自己的开发环境,创建自己的模型,快速生成代码。
2、核心框架:平台为Java代码与JS代码之间提供了一套完整的面向对象的核心框架支撑系统,可以认为这是一个抽象层,无论是在页面表现上,还是 在 CURD的任意一层,平台均提供了最大限度的抽象。用以保证平台本身的可扩展性、稳定性及灵活性。J-HI平台中提供了大量的API(Java与JS),为用户在开发过程中随需调用,从而进一步加快开发速度,保证代码质量。
3、业务平台功能:包括权限管理、组织结构、枚举管理、国际化管理、任务管理、日志管理、Excel报表管理、消息管理等。
4、工作流:包括工作流引擎及流程编辑器等。
具体资料参考地址:http://fei-6666.iteye.com/blog/993452
3. 什么叫开源软件
什么是开源软件?
1997春天,自由软件社团的一些领导者聚集到加利福尼亚州。这个社团包括EricRaymond,TimO’Rerlly,VA Research的总裁Larry Augustin等人,他们所关心的是一种寻找方式,来向以前躲避自由软件思想的人们推广这种思想。他们担心,自由软件基金会的反商业信条会让人们对自由软件敬而远之。
在Eric Raymond的坚持下,这群人同意他们所缺乏的是市场营销活动,这个活动的目的是赢得思想,而不仅仅是市场份额。最后讨论的结果产生了一个新的术语来描述他们所推进的软件:Open Source(开烦扰软件)。他们制定了一系列的指导原则,用来描述哪些软件可以有资格被称为开源软件。
Bruce Perens 为制定开源软件的定义做了很多基础性的工作。GNU工程的正式目标之一就是创造一个自由可用的操作系统,以作为平台来运行GNU软件。从软件引导(softwera boottstrapping)的传统观点来看,Linux已经成为那个平台,L inux是在GNU工具的帮助下创造出来的。Perens曾经是Debian工程的领导者,它所管理的Linux发行版本,只包括那些符合GNU精神的软件。Perens已经在“Debian社会契约”(Debian Social Contract)中明确地阐明了这一立场。开源软件的定义是“Debian社会契约”的直接产物,因此开源软件是与GNU的精神一脉相承的。
与GPL相比,开源软件的定义允许更大授权自由。特别是当软件中混合了专有软件和开源软件时,开源软件的定义允许在它们的基础上生成更大的混合。
结果是,开源软件许可证能令人信服地允许使用和再分开开源软件,而不必考虑补偿或者信用问题。举例来讲,你可以得到伟大的Netscape浏览器的源代码,并且把它作为连同另一个软件(可能是专有软件)一起发布出去,而用不着去通知网景(Netscape)公司。网景为什么会希望如此呢?原因很多,最引人注目的是,这样做可以为他们的客户端代码赢得更大的市场份额。这些代码与他们的商业软件一起工作得的非常好。从这个角度来说,奉送源代码是建立平台的一个很好的方式。这也是网景的人不使用GPL的原因之一。
这在社团中可不是小事一桩。1998年下半年,曾经有一场重要的争论对Linux威胁极大,几乎Linux社团破裂。裂痕是因出现了两个软件系统GNOME和KDE而引发的,它们两者都试图建立一个面向对象的桌面界面。一方面,KDE利用了Troll Technology公司的Qt库,其中的一部分属于专有代码,但是很稳定、很成熟。另一方面,GNOME决定使用GTK+库,尽管它不如Qt成熟,但是它是完全自由的库。
过去,Troll Technology不得不在使用GPL和维持他们的专有软件立场之间进行选择。GNOME和KDE的裂痕本来会持续下去。然而,在开源软件出现后,虽然Troll仍然控制他们想要的技术,但是Troll可以为希望Qt符合开源软件定义的人改变他们的许可证。Linux社团两个重要部分的裂痕看来要弥合了。
4. 开源的快速开发平台有哪些
快速开发平台,就是可以使得开发更为快速的开发平台。当开发平台产生之后,虽然减少了编程人员大量的编程时间,但是很多开发平台的效果并不是很理想,比如说某些开发平台比较复杂、难以掌握;有的开发平台通用性比较差;有的开发平台在时间上并没有得到改善;还有的依然还是需要写很多代码等等。这些问题的存在促使开发者不断的摸索、不断的改进,到最后越做越成熟,以致于现在市面上出现的大部分开发平台效率都非常高,他们改善了以往的产品存在的缺陷,使得开发过程比以往更简洁、编写代码更少、开发效率越来越高。
如天翎快速开发平台1:微服务架构,采用spring cloud框架实现,机卡分离,2:表单引擎:类同word操作一样,方便容易上手,可视化配置实现,对于一些特殊场景如主子表动,主从架构刷新重计算等有显着效果。3:流程引擎:中国式国情最佳落地实践者,特色业务场景如挂起,催办。加强。多人抢占办理等直接配置实现,同时流程流转中表单哪些字段可见,隐藏,修改等权限控制勾选实现。
·整合快速、拓展灵活,着力构建强大的端到端链接能力;·掌握流程管理大脑流程引擎核心科技,更适应中国式流程管理;·提供完善的可视化流程软件开发套件,成熟、稳定、安全。·传承BPM经典理论指导,专注提升政企组织控制力与执行力;天翎17年技术积累和持续打磨的第4代业务流程管理平台;·融合微服务架构、多租户模式、集群部署等新特性于一体。
5. 常用的开源软件有哪些
1、Dolibarr
Dolibarr是一个免费的开源ERP软件包,该软件为中小型实体、基金会和自由职业者提供大量的业务和组织解决方案。它的主要特点是企业资源规划(ERP)和客户关系管理(CRM),这些是当今复杂和数据丰富的组织的基本功能。
2、WinSSHTerm
WinSSHTerm是一款绿色单文件SSH客户端工具,这款工具结合了PuTTY/KiTTY,Winscp和VcXsrv等多个开源工具,还包括对复制文件和启动X应用程序的内置支持,方便用户直接使用。
3、IconMeter
IconMeter是一款开源免费,简单实用的系统监测工具,它是一个适用于MSWindows的小型notifyicon系统性能表。采用c#制作,显示小的notifyicon,可以在小条形图中显示当前的CPU、内存、磁盘和网络负载等信息,直观方便。
4、RedisDesktopManagerwindows
RedisDesktopManagerwindows是一款简单快速、跨平台的Redis桌面管理工具,也被称作Redis可视化工具,是一款开源软件,支持通过SSHTunnel连接,支持windows、mac等多平台。
5、Catfish(鲶鱼)Blog
Catfish(鲶鱼)Blog是一款开源的PHPBlog系统,其衍生于优秀的内容管理系统:Catfish(鲶鱼)CMS,秉承了Catfish(鲶鱼)CMS的先进设计理念,并且专注于个人博客系统,使用十分便捷。
6. 有没有类似JEECG的免费开源快速开发平台
免费的软件开发平台有2中状态:
1、自己生成代码
2、低代码配置式
JEECG是属于代码生成式的,也可以理解成脚本式;目前有好几家厂商都是这样的:天翎、炎黄盈动、K2、起步等,都是这样的,有些通过脚本实现复杂业务逻辑以及判断节点呈现,效果很好
7. 8个免费且功能强大的软件,全都开源
在软件领域,开源软件是一个很重要的分支。开发者可以利用开源社区的各项目代码进行二次开发,用户也可以用成品直接作为一些付费软件的替代品,因为绝大多数开源软件都是可免费使用(当然也有一些开源软件是授权付费才能使用),所以出了一期《10个免费且强大的开源软件,不花钱真爽》,这期文章得到不少小伙伴的收藏,后台跟我说想要收集更多免费开源软件。安排!后续整理成专栏形式方便大家翻阅。
其实,现在很多第三方的torrent下载客户端都是基于【qBittorrent】进行二次修改,所以如果你想用原汁原味的,那直接用【qBittorrent】这个完全无广告且免费的开源下载工具即可,配置好Tracker服务器地址,挂着速度也不差。
【diagrams】是一个开源免费的绘制流程图和示意图的软件,相信很多人也知道,在流程图绘制软件这个类目,被许多人青睐的就是微软的【Microsoft Office Visio】了,不过Visio是收费软件,而【diagrams】是完全免费。
可以看到,【diagrams】提供了流程图、UML图、脑力图等非常多的模板等,满足用户的各种制图需求。普通用户使用我认为是不输【Visio】的,完全可以胜任专业制图需求了,包括提供了多种图形供用户挑选,如箭头、基本、通用等;有各种各样的UML类图,能满足日常使用需求;可以将画布缩小进行查看,并能够进行图层设置;有数字排版、插件、标签、配置等选项;视图中有网格、阴影、参考线、便笺本等之类等等,功能上可以说是非常齐全的。
关键是免费啊,太香了。
【bongo cat mver】是一款画风很萌的创意桌面,它以一只非常可爱的小猫咪的形式展示,能够根据鼠标、键盘操作做出相应的动作,你在鼠标键盘上按下什么键,这只小猫咪就会同步按下这些键位。另外一共有四种模式供用户选择,包括键鼠、绘画、手柄还有纯键盘,另外它支持用户自定义设置五十多个音频和按键,并且可以动手diy小猫的形象,趣味性十足。
既然提到PDF,就不得不说另外一个用户热需求——PDF阅读器,其实这类工具非常多,其中不乏佼佼者如Adobe Acrobat Pro DC,国产的福昕PDF阅读器等老牌软件,从软件功能的角度毫无疑问它们是极其优秀的,但它们不是有的功能要付费,就是体积稍大。普通用户大多只需要简单的阅读功能即可。
那么只需《Sumatra PDF》这款软件即可,它是一款免费开源的pdf阅读器, 此软件免费、小巧,除了pgup/pgdn翻页外,还可用p/n(previous,netx)翻页,功能极度精简,速度很快。甚至它还支持电子书(ePub, Mobi),XPS,DjVu,CHM和 漫画书(CBZ和CBR)等格式,简直是一个阅读神器。另外还官网还提供了免安装版本,也就是说你可以放在网盘或U盘上,在任何一台Win系统的电脑使用。
相信不少用户这几年都发现,现在的视频站点越来越多使用M3U8这种格式,是因为M3U8可以做多码率的适配,根据网络带宽,客户端会自动选择一个适合自己码率的文件进行播放,保证视频流的流畅。但是它的文件也是又多又碎,想要下载回来其实会有很多文件,那就得用专门的下载工具才能完整下载。譬如【M3U8-Downloader】使用了基于FFmpeg开源技术,使用非常方便,只需要输入m3u8地址,选择需要的视频格式,比如mp4,再选择下载路径,然后点击下载,M3U8-Downloader就会帮你把这个播放列表里的视频都下载回来,并且自动合并成一个视频文件。【M3U8-Downloader】自带嗅探功能,视频格式支持 FLV、MP4、MKV 和 TS。
不得不吐槽微软自带的图片浏览器真是弱鸡,支持的格式并不是很多,而且稍微大一点的图片加载就比较卡顿。【ImageGlass】是一款免费常用的开源图像浏览工具,支持常见的超过70种图像格式,绝对够你用的。显示图片速度更加流畅,加载更加快速,另外还可以将图片转换不同格式,界面设计也比以前介绍过给大家的开源图片浏览器XnView要好看很多,更现代化的设计。
【OBS studio】是一款开源的录屏软件,主要是主播用于直播的工具。OBS studio输出格式多,输出质量高,支持60FPS,支持1080p,支持实时推流(直播用),系统占用少的不掉帧,另外它还拥有高性能实时视频/音频捕获和混合,带有每个源滤波器的直观音频混合器,例如噪声门,噪声抑制和增益。全面控制VST插件支持。
【OBS studio】还可以创建由多种录制来源组成的视频场景,包括窗口捕获,图像,文本,浏览器窗口,网络摄像头,捕获卡等,不限数量。简单来说,就是你希望录屏的时候,在视频里边显示什么内容,都可以自定义。
1、先简要设置好视频和音频的输出参数。
2、在软件界面下方的“来源”功能区,点击 + 号,添加我们要录制的场景,这里我们选择“显示器捕获”即可,就可以录制整个屏幕了。
3、当然有的小伙伴会问,如何自定义录屏的位置和大小呢?猿仔告诉大家一个逆向思维方法,即通过拉大源场景,使得场景大于录制框,然后拖动场景,就可以实现自定义录屏的位置了。
4、最后点击软件界面右下角的“开始录制”,录制完毕后,点击同个按钮,结束录制。文件会自动保存至默认路径下(路径详见软件的输出设置)。
综上,OBS studio虽然功能强大,性能强劲,但是初学者可能不太好上手,可能会遇到各种问题。比如添加捕获源的时候没反应,这就需要将NVADIA设置里边的3D设置,将OBS软件的首选图形处理器改为集成图形。有兴趣的小伙伴可以试试,在技术层面,OBS配得上最良心这三个字。
8. 求一款免费的开源的快速开发平台。急急急
1、专业的软件快速开发平台:myapps低代码平台和flowportal低代码平台都提供了免费版本,不限用户,不限功能,前者还不限并发,后者限制在20条流程内,对于大多数中小企业来说足够了,关键的因为是专业型平台,已经有足够多的付费用户在前面打磨过了,所以新用户可以免遭小白鼠的命运;
2、开源的快速开发平台:好处就是免费咯!但是问题也很突出,没有服务保障,厂家也没有责任对你用的好不好及用不好的结果负责,个人认为业务爱好研究还行,但正要给客户商用,那还是三思而后行;
3、SaaS化开发平台:好处是便宜!但是问题也很突出,功能限制多(限制时间、限制用户数、限制并发的都有),计费规则复杂,计费陷阱也很多,关键的业务数据的安全性存疑,建议还是继续观望吧。
经过近二十年发展,低代码平台在国内发展已经非常成熟,建议有条件的要上,没条件的创造条件也要上,在业务场景日以变革、客户要求日益提高的今天,“开发效率+个性化”对于软件公司和终端企业来说都太重要啦!
9. 下载软件的平台有哪些
下载软件的平台很多,下面列举比较优秀的几个:
1、Windows绝赞应用
它收录了350+款Windows应用,每款都精挑细选,符合实用、无侵入性广告、尊重隐私、持续维护、上手简单和兼容性强等特征,拒绝破解版、地区受限和网页封装应用。
目前,Windows绝赞应用项目已涵盖隐私安全、音视频工具、系统增强、网络通信、数据恢复、文件管理等23类优质应用,全部明确标识有是否付费、开源、跨平台、支持多语言等,还额外提供了优秀国产应用和流氓黑名单分类,直观高效。
10. 有哪些免费的软件开发平台
importjava.awt.*;
importjavax.swing.*;
@SuppressWarnings("serial")
{
ControlSnakecontrol;
Toolkitkit;
Dimensiondimen;
publicstaticvoidmain(String[]args){
newMainClass("mysnake");
}
publicMainClass(Strings){
super(s);
control=newControlSnake();
control.setFocusable(true);
kit=Toolkit.getDefaultToolkit();
dimen=kit.getScreenSize();
add(control);
setLayout(newBorderLayout());
setLocation(dimen.width/3,dimen.height/3);//dimen.width/3,dimen.height/3
setSize(FWIDTH,FHEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
publicstaticfinalintFWIDTH=315;
publicstaticfinalintFHEIGHT=380;
}
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.Timer;
importjava.util.Random;
@SuppressWarnings("serial")
{
Randomrand;
ArrayList<Point>list,listBody;
Stringstr,str1;
staticbooleankey;
intx,y,dx,dy,fx,fy,flag;
intsnakeBody;
intspeed;
publicControlSnake(){
snakeBody=1;
str="上下左右方向键控制P键暂停...";
str1="现在的长度为:"+snakeBody;
key=true;
flag=1;
speed=700;
rand=newRandom();
list=newArrayList<Point>();
listBody=newArrayList<Point>();
x=5;
y=5;
list.add(newPoint(x,y));
listBody.add(list.get(0));
dx=10;
dy=0;
fx=rand.nextInt(30)*10+5;//2
fy=rand.nextInt(30)*10+5;//2
setBackground(Color.WHITE);
setSize(newDimension(318,380));
finalTimertime=newTimer(speed,this);
time.start();
addKeyListener(newKeyAdapter(){
publicvoidkeyPressed(KeyEvente){
if(e.getKeyCode()==37){
dx=-10;
dy=0;
}elseif(e.getKeyCode()==38){
dx=0;
dy=-10;
}elseif(e.getKeyCode()==39){
dx=10;
dy=0;
}elseif(e.getKeyCode()==40){
dx=0;
dy=10;
}elseif(e.getKeyCode()==80){
if(flag%2==1){
time.stop();
}
if(flag%2==0){
time.start();
}
flag++;
}
}
});
}
publicvoidpaint(Graphicsg){
g.setColor(Color.WHITE);
g.fillRect(0,0,400,400);
g.setColor(Color.DARK_GRAY);
g.drawLine(3,3,305,3);
g.drawLine(3,3,3,305);
g.drawLine(305,3,305,305);
g.drawLine(3,305,305,305);
g.setColor(Color.PINK);
for(inti=0;i<listBody.size();i++){
g.fillRect(listBody.get(i).x,listBody.get(i).y,9,9);
}
g.fillRect(x,y,9,9);
g.setColor(Color.ORANGE);
g.fillRect(fx,fy,9,9);
g.setColor(Color.DARK_GRAY);
str1="现在的长度为:"+snakeBody;
g.drawString(str,10,320);
g.drawString(str1,10,335);
}
publicvoidactionPerformed(ActionEvente){
x+=dx;
y+=dy;
if(makeOut()==false){
JOptionPane.showMessageDialog(null,"重新开始......");
speed=700;
snakeBody=1;
x=5;
y=5;
list.clear();
list.add(newPoint(x,y));
listBody.clear();
listBody.add(list.get(0));
dx=10;
dy=0;
}
addPoint(x,y);
if(x==fx&&y==fy){
speed=(int)(speed*0.8);//速度增加参数
if(speed<200){
speed=100;
}
fx=rand.nextInt(30)*10+5;//2
fy=rand.nextInt(30)*10+5;//2
snakeBody++;//2
}//2
repaint();
}
publicvoidaddPoint(intxx,intyy){
//动态的记录最新发生的50步以内的移动过的坐标
//并画出最新的snakeBody
if(list.size()<100){//蛇身长度最长为100
list.add(newPoint(xx,yy));
}else{
list.remove(0);
list.add(newPoint(xx,yy));
}
if(snakeBody==1){
listBody.remove(0);
listBody.add(0,list.get(list.size()-1));
}else{
listBody.clear();
if(list.size()<snakeBody){
for(inti=list.size()-1;i>0;i--){
listBody.add(list.get(i));
}
}else{
for(inti=list.size()-1;listBody.size()<snakeBody;i--){
listBody.add(list.get(i));
}
}
}
}
publicbooleanmakeOut(){
if((x<3||y<3)||(x>305||y>305)){
returnfalse;
}
for(inti=0;i<listBody.size()-1;i++){
for(intj=i+1;j<listBody.size();j++){
if(listBody.get(i).equals(listBody.get(j))){
returnfalse;
}
}
}
returntrue;
}
}