基于FPGA的“2048”游戏综合设计

基于FPGA的“2048”游戏综合设计,第1张

学号:17020110019    姓名:高少魁

【嵌牛导读】2048游戏在网页端与移动端均可以使用,本设计将该游戏移植到了硬件平台FPGA上,使用Digilent Nexys 4 DDR 开发板,使用Xilinx Vivado 用于搭建基于MicroBlaze 软核处理器的硬件运行环境,“2048”游戏主程序和VGA 显示控制等程序的编写在Xilinx SDK 上进行。游戏必需的上、下、左、右方向控制,在物理上由开发板上的按键实现,在软件层面通过查询方式实现。最终,嵌入式系统的运行结果将输出到显示屏上,包含4×4 棋盘方格、游戏得分和游戏结果。

【嵌牛鼻子】FPGA    VGA    最小嵌入式系统    软核CPU

【嵌牛正文】

一、硬件设计

系统设计的整体电路框图如图所示

硬件部分由基于MicroBlaze 软核处理器的最小嵌入式系统和外围的输入输出模块构成。最小嵌入式系统以MicroBlaze 软核处理器、时钟模块(Clocking Wizard)、处理器系统复位模块(Processor System Reset)、调试模块(MicroBlaze Debug Module,MDM)、内置存储(LocalMemory)和外置存储接口模块(Memory Interface Generator,MIG)为核心,以AXI 总线互联模块(AXI Interconnect)作为处理器与外设的通信基础,以直接或间接挂载于其上的AXI 中断控制器(AXI Interrupt Controller)和中断请求集成器(Concat)作为中断信号的数据通路。

外围输入输出模块包括以下若干部分,它们均通过AXI 总线与处理器通信。UART 模块(AXI Uartlite)实现嵌入式系统与计算机的调试通信,GPIO 模块(AXI GPIO)实现按键输入,TFT 模块(AXI TFT Controller)把系统运行结果通过VGA 接口输出。

由于软件部分需要存储大量的图片资源,且TFT 模块要求显存不少于2MB,而处理器的内置存储空间不足,故使用MIG 模块以使用外置DDR2 存储。硬件系统共需要有三种不同频率的时钟信号:处理器需要100MHz 时钟、MIG 模块需要200MHz 时钟、TFT 模块需要25MHz 时钟,故Clocking Wizard 输出三路时钟。

要把上述嵌入式系统在FPGA 上实现,需要添加管脚约束。共有三处需要添加约束:时钟信号输入、GPIO 模块的按键输入和TFT 模块的VGA 接口输出。前两处在添加相应IP 核时以完成约束,TFT 模块的约束需要手动完成,即把红、绿、蓝三通道颜色信号和行、场同步信号约束到VGA 端子上。

二、软件设计

1.图片素材

嵌入式系统的运行结果,即“2048 ”游戏的状态需要以图形的方式输出到显示屏,因此需要把所有可能显示的较为复杂的内容预先制作好并存储起来。这些内容包括2~ 65536 共16个数字方块、用于显示得分的 0~ 9 这十个数字 、“得分”提示语 和游戏给出的“赢”和“输”的提示信息,均使用 Adobe Photoshop制作。然后,利用 Image 2 Lcd 工具软件把图片输出为 C 语言格式的数组备用。

2.主程序部分

主程序实现的功能为:配置硬件工作参数 、调用 VGA 显示部分的函数来显示两幅静态页面 、初始化游戏、初始化屏幕显示和 识别用户输入的控制信号并传输给游戏核心部分。

硬件工作参数包括GPIO 通道的数据传输方向 、 显存基地址 和 TFT 扫描方式 。 GPIO 用于获取用户输入的控制信息,因此方向为输入 TRI 寄存器的值配置为 0 x1F 。显存基地址为0x 87 E 00000 ,大小为 2MB ,该信息写入 AR 寄存器 。 TFT 显示控制器的工作参数为从左到右扫描、开启显示输出,相应地把 0x 1 写入 CR 寄存器。

程序开始执行时,首先调用VGA 显示部分的两个函数分别 2~ 65536 共 16 种不同数字方格的棋盘。 然后,调用函数开始一局新游戏并在屏幕上预先绘制好不需要更新的棋盘区域底框、“得分”提示信息和显示分数的区域的底框。 主程序使用查询的方式不断获取 GPIO 寄存器提供的用户输入信息。当有输入时,调用游戏核心部分的函数更新“棋盘”信息。

3.VGA显示部分

该部分程序按照一定的规则向显存写入数据以在显示屏上显示不同的内容。这些内容包括 2~ 65536 共 16 种数字方格的棋盘、得分信息、游戏进行时的棋盘和提示信息。

2~ 65536 共 16 种数字方格的棋盘在程序刚开始执行时显示,每幅画面大约显示 5 秒,用软件延时粗略控制。随着游戏的进行, VGA 显示部分不断读取“棋盘”,并把代表相应数字的图片绘制到显示器上。同时,它还读取得分信息,并绘制到预先设定的位置。如果“棋盘”上出现了“ 2048 ”,它输出“赢”的提示信息。如果“棋盘”上的方格均不能移动且没有出现“ 2048 ”,则显示“输”的提示信息。

4.游戏核心部分

游戏核心部分主要涉及对“棋盘” 的处理 ,程序把它抽象为 4 × 4 的二维数组。这部分的功能包括: 游戏初始化、 方块四个方向 的移动和合并策略、向棋盘添加一个新的方块、检查游戏的状态、计算得分和获取游戏的状态信息。

游戏初始化把得分清零,并向棋盘添加两个数字。方块四个方向的移动和合并策略与我们之前体验过的2048 游戏完全一致。方块移动后,“棋盘”上一定会增加一个新的方块,可能是2 或 4 ,概率为 9:1 。之后,程序检查“棋盘”上是否出现过 2048 。如果出现过(“棋盘”上至少有一个不小于“ 2048的方格),则游戏结束,通知 VGA 绘图部分显示“赢”的提示信息。如果没有出现过,则检查棋盘上的空余位置数量数量以以及方块是否还能移动。如果没有空余位置且方块不能继续移动,及方块是否还能移动。如果没有空余位置且方块不能继续移动,则游戏失败,通知则游戏失败,通VGA显示部分显示部分输出“输”的提示信息。接下来,输出“输”的提示信息。接下来,程序将通知程序将通知VGA显示部显示部分更新“棋盘”和得分的显示。分更新“棋盘”和得分的显示。

三、设计运行效果

运行效果如下图

1、需要确定所使用的串口通信协议,并在程序中进行相应的配置。

2、常见的串口通信协议有Modbus、Profibus等,需要根据电子屏的厂家提供的通信协议文档进行设置,在程序中编写相应的代码,实现将命令发送给电子屏,以请求回读参数,对于不同的通信协议,命令的格式和内容会有所不同,因此需要根据协议文档进行相应的设置。

3、接收电子屏回复的数据,在程序中编写相应的代码,实现接收电子屏回复的数据,并将其存储到相应的变量中,对于回读2048个参数的情况,需要在程序中开辟足够的存储空间,以存储所有的参数数据。

4、对接收到的参数数据进行解析和处理,根据电子屏的通信协议文档,将接收到的参数数据进行解析,并将其转换为可读性更强的形式,便于用户进行查看和分析。

java编写时钟程序_Java实现时钟小程序 原创

2021-02-17 00:47:37

无可就是九头鸟

码龄6年

关注

哎,好久没上博客园发东西了,上一次还是两个月前的五一写的一篇计算器博客,不过意外的是那个程序成了这学期的Java大作业,所以后来稍微改了一下那个程序就交了上去,这还是美滋滋。然后五月中旬的时候写了一个2048小游戏,由于写完第二个版本第二天就生病了,休养了好几天才缓过来,最后嫌麻烦就没发园子里了,直接挂Github上了。然后又忙着准备期末,期末玩休息了5天又开始数据库课程设计,用Java写了一个小系统,花了一个星期左右,写了差不多3500行了。然后写完就放学了,放学的日子就感觉自己开始懒散了,静不下心来写东西,每天睡觉,看一些无聊的视频。。。前几天算是缓过神来,找回了脑子,于是又开始想着在放弃Java之前再多写一点东西,于是花了两个下午写了一个时钟,感觉看着还行。

-----------------------------------以下是正经话-----------------------------------

其实这个程序并不难,主要是用Java 2D画图,弄一个线程,每隔一秒,依照时针分针秒针各自的速度重新计算它们走过的角度(相对12点方向顺时针偏离的角度),利用这个角度算出它们各自端点的坐标,重绘一次表针,达到刷新的目的,最后时限走动的效果,思路很简单,清晰明了。但是关键是这个画图呀,想着很容易,重写继承过来的JFrame里的paint函数就行,最后发现效果并不是期待的那样,而是一闪一闪的,于是去寻找原因,结果,尼玛,原来水这么深,一下子触到了知识盲区,什么repaint的实现细节,先调用update,再调用paint,update函数又是如何工作的,慢慢弄懂了它为什么会一闪一闪的原因,然后寻找解决办法,然后就看到了什么双缓冲原理,WTF!什么玩意呀,根本没听过,然后乖乖地去看那东西的实现原理,又看到有人建议不要去重写paint方法,说是会遇到诸多意想不到的问题,建议去重写paintComponent方法,可是书本上画图的例子都是重写paint方法呀,况且我也没听过paintComponent,无奈,又去看了一下paint的工作原理,原来它会调用paintComponent,最后放弃了自己实现双缓冲,乖乖改用了paintComponent。。。

其实我还遇到了几个脑残的问题,比如在画秒针时,直接把画时针的部分代码复制下来,最后忘了改掉走动的速度,结果运行时还在想秒针怎么走不动呢?原谅我是个逗逼,还有什么秒针逆时针走动,最后才发现算坐标时误把y轴正方向当成了向上,哎。。。

Anyway,最后运行的效果还是挺好的

3c55d177347f0c89c364f17fe0859265.png

-----------------------------------以下是代码-----------------------------------

1 import java.awt.*2 importjava.util.Date3 import javax.swing.*4

5 public class Clock extendsJComponent{6 /**

7 *8 */

9 private static final long serialVersionUID = -5379472973578609775L10 private Font f = new Font("微软雅黑",Font.PLAIN,15)11 private Font f2 = new Font("微软雅黑",Font.BOLD,15)12 private JLabel l = new JLabel("当前时间:")13 private JLabel display = newJLabel()14 private JLabel display2 = new JLabel("")15 private int hour = 016 private int min = 017 private int sec = 018 private Date now = newDate()19 privateGraphics2D g20 final double PI =Math.PI21 private String strTime = ""22

23 @SuppressWarnings("deprecation")24 publicClock(){25 add(l)26 l.setBounds(120, 320, 80, 20)27 l.setFont(f)28 add(display)29 display.setBounds(195, 320, 80, 20)30 display.setFont(f)31 display.setBorder(BorderFactory.createLineBorder(Color.black))32 add(display2)33 display2.setBounds(90, 350, 250, 20)34 display2.setFont(f)35 hour =now.getHours()36 min =now.getMinutes()37 sec =now.getSeconds()38 setVisible(true)39 }40

41 public voidpaintComponent(Graphics g1){42 doublex,y43 super.paintComponent(g1)44 g =(Graphics2D) g145 //反锯齿开关开

46 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)47

48 //画表盘

49 g.setPaint(new GradientPaint(5,40,Color.blue,15,50,Color.yellow,true))50 g.setStroke( new BasicStroke(3,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL))51 g.drawOval(75, 40, 250, 250)52 g.fillOval(195, 160, 10, 10)53 g.setColor(Color.black)54

55 //画60个点

56 for(int i = 0i <60i++)57 {58 double[] co = new double[2]59 co = paint_Dot(i * 2 * PI / 60)60 x = co[0]61 y = co[1]62 if(i == 0 || i == 15 || i == 30 || i == 45)//画3,6,9,12四个大点

63 {64 g.fillOval((int)(x - 5 + 200),(int)(y - 5 + 165),10,10)65 }66 else//其他小点

67 {68 g.fillOval((int)(x - 2.5 + 200),(int)(y - 2.5 + 165),5,5)69 }70 }71

72 //画四个数字

73 g.setFont(f2)74 g.drawString("3", 300, 171)75 g.drawString("6", 195, 273)76 g.drawString("9", 91, 171)77 g.drawString("12", 190, 68)78

79 //画时针,分针,秒针

80 paint_HourPointer(hour*3600 + min*60 + sec,g)//时针走过的秒数

81 paint_MinutePointer(min*60 + sec,g)//分针走过的秒数

82 paint_SecondPointer(sec,g)//秒针走过的秒数

83 }84

85 public voidshowUI(){86 newThread() {87 @SuppressWarnings("deprecation")88 public voidrun() {89 while (true)90 {91 now = newDate()92 hour =now.getHours()93 min =now.getMinutes()94 sec =now.getSeconds()95 try{96 Thread.sleep(1000)97 } catch(InterruptedException ex) {98 ex.printStackTrace()99 }100 showTime()101 repaint()102 }103 }104 }.start()105 }106

107 public void paint_HourPointer(int second,Graphics2D g){//second表示当前时间的时针相对00:00:00走了多少秒

108 doublex,y,angle109 angle = second * PI / 21600//时针的速度为PI/21600 (rad/s)

110 x = 200 + 60 *Math.sin(angle)111 y = 165 - 60 *Math.cos(angle)112 g.setStroke( new BasicStroke(5,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND))113 g.setPaint(new GradientPaint(200,165,Color.red,260,165,Color.blue,true))114 g.drawLine(200, 165, (int)x, (int)y)115 }116

117 public void paint_MinutePointer(int second,Graphics2D g){//second表示当前时间的分针相对00:00:00走了多少秒

118 doublex,y,angle119 angle = second * PI / 1800//分针的速度为PI/1800 (rad/s)

120 x = 200 + 80 *Math.sin(angle)121 y = 165 - 80 *Math.cos(angle)122 g.setStroke( new BasicStroke(3,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND))123 g.setPaint(new GradientPaint(200,165,Color.magenta,280,165,Color.blue,true))124 g.drawLine(200, 165, (int)x, (int)y)125 }126

127 public void paint_SecondPointer(int second,Graphics2D g){//second表示当前时间的秒针相对00:00:00走了多少秒

128 doublex,y,x1,y1,x2,y2,x3,y3,angle129 double cos = 90 / Math.sqrt(8125)//90*90+5*5

130 double sin = 5 / Math.sqrt(8125)131 angle = second * PI / 30//时针的速度为PI/30 (rad/s)

132 x = 200 + 95 *Math.sin(angle)133 y = 165 - 95 *Math.cos(angle)134 x1 = 200 + 20 * Math.sin(angle +PI)135 y1 = 165 - 20 * Math.cos(angle +PI)136 x2 = 200 + Math.sqrt(8125)* ( Math.sin(angle)*cos - Math.cos(angle)*sin )//sin(a-b)

137 y2 = 165 - Math.sqrt(8125)* ( Math.cos(angle)*cos + Math.sin(angle)*sin )//cos(a-b)

138 x3 = 200 + Math.sqrt(8125)* ( Math.sin(angle)*cos + Math.cos(angle)*sin )//sin(a+b)

139 y3 = 165 - Math.sqrt(8125)* ( Math.cos(angle)*cos - Math.sin(angle)*sin )//cos(a+b)

140 g.setStroke( new BasicStroke(2,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL))141 g.setPaint(new GradientPaint(180,165,Color.CYAN,295,165,Color.MAGENTA,true))142 g.drawLine((int)x1, (int)y1, (int)x, (int)y)143 g.drawLine((int)x2, (int)y2, (int)x, (int)y)144 g.drawLine((int)x3, (int)y3, (int)x, (int)y)145 }146

147 public double[] paint_Dot(doubleangle){148 double[] co = new double[2]149 co[0] = 115 * Math.cos(angle)//横坐标

150 co[1] = 115 * Math.sin(angle)//纵坐标

151 returnco152 }153

154 @SuppressWarnings("deprecation")155 private voidshowTime(){156 String date157 int hour_temp = hour,min_temp = min,sec_temp =sec158 sec_temp += 1159 if(sec_temp >= 60)160 {161 sec_temp = 0162 min_temp += 1163 }164 if(min_temp>=60){165 min_temp=0166 hour_temp+=1167 }168 if(hour_temp <10)169 strTime = "0" + hour_temp + ":"170 else

171 strTime = "" + hour_temp + ":"172

173 if(min_temp <10)174 strTime = strTime + "0" + min_temp + ":"175 else

176 strTime = strTime + "" + min_temp + ":"177

178 if(sec <10)179 strTime = strTime + "0" +sec_temp180 else

181 strTime = strTime + "" +sec_temp182 //在窗体上设置显示时间

183 date = " " + (now.getYear()+1900) + "年" + (now.getMonth()+1) + "月" + now.getDate() + "日 " + "星期"184 switch(now.getDay()) {185 case 1:186 date += "一"187 break188 case 2:189 date += "二"190 break191 case 3:192 date += "三"193 break194 case 4:195 date += "四"196 break197 case 5:198 date += "五"199 break200 case 6:201 date += "六"202 break203 case 7:204 date += "日"205 break206 }207 date += " CST"208 strTime = " " +strTime209 display.setText(strTime)210 display2.setText(date)211 }212

213 public static voidmain(String args[]){214 Clock c = newClock()215 c.showUI()216 JFrame f = new JFrame("Clock By XJX")217 Image img=Toolkit.getDefaultToolkit().getImage("title.gif")//窗口图标

218 f.setIconImage(img)219 f.setSize(400,400)220 f.setResizable(false)221 f.add(c, BorderLayout.CENTER)222 f.setLocationRelativeTo(null)223 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)224 f.setVisible(true)225 }226 }

相关资源:...仿真和代码)_51单片机做实时时钟显示-小程序文档类资源-CSDN文库

文章知识点与官方知识档案匹配

Java技能树首页概览

91513 人正在系统学习中

打开CSDN APP,看更多技术内容

不会编程也能亲手编写一个桌面数字小时钟程序,仅3步轻松实现_程序员笑...

第一步 打开电脑自带的记事本并编写以下脚本。 源码: @echo off Title 小时钟丨编程狮(w3cschool.cn) @mode con cols=50lines=5color00:main cls echo.echo 时间:%time%echo.echo 日期:%date%echo.ping-n20.0.0.0>nulgotomain ...

继续访问

OpenGL织梦之旅【第二章】编写一个的钟表程序_plusplus7的博客-CSDN...

在配置好了glut环境以后,运行了第一个opengl程序以后,我们现在就来尝试编写一个实用一点的程序——时钟程序。 如图: 制作这样一个程序,对于初学者来说,感觉上或许很难,但是只要我们一步一步地慢慢来,总会有熟练掌握的那一天。“包子要...

继续访问

Java时钟程序(绘制了一个带时针 分针 秒针的仿真时钟)

这是我自己写的一个java时钟程序 当然你可以自己改动 喜欢就拿去吧

Java时钟小程序

Java时钟小程序,可以显示出当前的系统时间,

java 钟_JAVA时钟 - 代码块 - 扣丁书屋 - https://www.codingsky.com

import javax.swing.*import java.awt.*import java.util.*import java.lang.Threadimport java.text.DecimalFormatpublic class DongClock extends JPanel {/*** @param args*/private int hourprivate int m...

继续访问

使用eclipse设计开发的安卓软件,闹钟定时器

使用eclipse开发的安卓软件--闹钟定时器,学生开发的小作业。 学生党可以下载参考的软件,首次学习,还在很多的不足,不喜勿喷,谢谢!

java 电子时钟_Java电子时钟实现代码

用Java编写一个程序,实现动态的文字时钟,以秒计时。知识点:1、线程(Thread)2、Applet类:它最先执行iniy()方法,完成后进入初始态;然后马上执行start()方法,Applet程序进入运行状态;线程也在start()中被启动,然后执行run()中的内容。当Applet程序所在的浏览器图标化或者转入其他页面时,Applet程序马上执行stop()方法3、Java不像C++,只能...

继续访问

java时钟_Java实现时钟小程序

哎,好久没上博客园发东西了,上一次还是两个月前的五一写的一篇计算器博客,不过意外的是那个程序成了这学期的Java大作业,所以后来稍微改了一下那个程序就交了上去,这还是美滋滋。然后五月中旬的时候写了一个2048小游戏,由于写完第二个版本第二天就生病了,休养了好几天才缓过来,最后嫌麻烦就没发园子里了,直接挂Github上了。然后又忙着准备期末,期末玩休息了5天又开始数据库课程设计,用Java写了一个小...

继续访问

java 简易时钟

简易时钟演示图一、界面设计二、获取时间与设置时间三、完整代码总结 演示图 非常质朴的时钟 一、界面设计 JFrame app=new JFrame("电子闹钟")Container c=app.getContentPane()//设置一个面板容器 面板为初始设置面板 JLabel clock=new JLabel("电子闹钟")clock.setHorizontalTextPosition(JLabel.CENTER)/.

继续访问

时钟程序设计java_Java数字时钟实现代码详解

这是一个数字钟表程序,主要功能是从系统中获取当前的系统时间然后再将其显示在数字时钟上,由于整个的数字时钟都是用函数构成的,所以它可以实现一般的数 字时钟所不具有的功能,比如说它可以被鼠标指针拖动到窗口的任意位置,除此之外它还可以实现钟表大小随鼠标滚轮的滚动而变大变小的 *** 作。package TheClockimport java.awt.*import javax.swing.*import ...

继续访问

钟表java程序教程 创建_JAVA--编写时钟的程序

代码如下:import java.awt.*import java.text.DateFormatimport java.util.*import javax.swing.*public class ClockDemo extends JFrame implements Runnable{Thread clockfinal int Xpoint=180final int Ypoint=...

继续访问

java时钟代码_JAVA实现时钟

时钟题目内容:在课程所给的时钟程序的基础上修改。这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数:public Clock(int hour, int minute, int...

继续访问

JAVA实现时钟

时钟 题目内容: 在课程所给的时钟程序的基础上修改。 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。 我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数: public Clock(int hour, i...

继续访问

java gui 做闹钟,用JAVA怎样编写一个可以在eclipse中运行的闹钟程序?

首先java程序的运行你需要下载和安装JDK,这是java运行的必备环境。首先你要在桌面上找到是eclipes,双击打开。在eclipes启动的过程中,会d出一个窗口,让你填写java工作区的保存目录,在这个目录下会保存你写的所有的源代码文件,小编建议你不要把工作区放在C盘,你如果重装系统的话,源代码就会全部损失。ecplies启动完成之后,会有一个欢迎页面,这个不用管,直接点击左上方的差号,取消...

继续访问

自定义时钟控件

通过继承View类,我们可以自定义自己需求的复杂控件。本例实现了一个自定义的时钟。 效果如下: 代码如下: package com.example.testimport java.util.Calendarimport android.content.Contextimport android.graphics.Bitmapimport android.gra

继续访问

java时钟课程设计,Java课程设计-时钟图形模拟

《Java课程设计-时钟图形模拟》由会员分享,可在线阅读,更多相关《Java课程设计-时钟图形模拟(19页珍藏版)》请在人人文库网上搜索。1、课 程 设 计 任 务 书专 业通信工程班 级13级四班姓 名张凯铭设 计 起 止 日 期设计题目:时钟图形模拟设计任务(主要技术参数):硬件环境:CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上软件环境:(1) *** 作系统:...

继续访问

最新发布 用Java编写一个时钟

public class Display { private int value=0private int limate=0public void increase() { value++if(value==limate) { value=0} } public int getvalue() { return value} Display(int limate){ this.limate=limate} } public clas.

继续访问

java编写时钟程序_Java编写时钟 Applet 程序

简单分析:package clockAppletimport java.applet.Appletimport java.awt.Colorimport java.awt.Graphicsimport java.util.Calendarimport java.util.GregorianCalendarpublic class ClockApplet extends Applet i...

继续访问

java 画图板源代码_非常值得学习的java 绘图板源代码

package minidrawpadimport java.awt.BasicStrokeimport java.awt.Colorimport java.awt.Fontimport java.awt.Graphics2Dimport java.io.Serializable//图形绘制类 用于绘制各种图形//父类,基本图形单元,用到串行的接口,保存使用到//公共的属性放到超类中,...

继续访问

Eclipse编写的Android数字时钟应用实例(用新建Runnable的方法)

Eclipse V4.2.0用新建Runnable的方法编写的Android数字时钟应用实例。

java时钟日历_java日历时钟小程序

java日历时钟小程序 java日历时钟小程序 Java时钟程序,按类粘贴至编译器编译即可使用。 import java.awt.BorderLayoutimport java.awt.Colorimport java.awt.GridLayoutimport java.awt.event.ActionEventimport java.awt.event.ActionListene...

继续访问

java显示一个钟表_java实现时钟效果

本文实例为大家分享了java实现时钟效果的具体代码,供大家参考,具体内容如下实现效果如图:Java代码:文件一:ClockPanel.javaimport static java.util.Calendar.HOURimport static java.util.Calendar.MILLISECONDimport static java.util.Calendar.MINUTEimport...

继续访问

时钟程序很难做吗

java编写时钟程序


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11564137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存