建材秒知道
登录
建材号 > 设计 > 正文

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

粗心的悟空
陶醉的航空
2023-01-26 12:12:00

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

最佳答案
懦弱的鸡翅
爱听歌的黄豆
2025-12-04 18:54:54

学号: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显示部显示部分更新“棋盘”和得分的显示。分更新“棋盘”和得分的显示。

三、设计运行效果

运行效果如下图

最新回答
高兴的战斗机
爱笑的小蝴蝶
2025-12-04 18:54:54

精彩2048不会设计隐私。精彩2048这款无良游戏,用虚假宣传的手段吸引顾客下载登录,注册手机号之后移动公司就发短信告诉你成功办理了30元5GB的流量套餐,并不是本人办理的,该游戏在窃取顾客隐私,并擅自帮人此业务,存在严重的欺诈陷阱。

斯文的玉米
糊涂的鲜花
2025-12-04 18:54:54

IPad设计一般使用尺寸:1024x768、2048x1536;

尺寸的单位为像素。

字体大小参考下图:

以上提供的内容主要是参考,最终的结果以设计适合度来衡量。

含糊的吐司
务实的手链
2025-12-04 18:54:54
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

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 {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启动的过程中,会弹出一个窗口,让你填写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编写时钟程序

激动的蚂蚁
大胆的摩托
2025-12-04 18:54:54
你需要用8块256kx8的sram来构成2048kx8的存储器。这些sram的输入信号信号名字相同的都连在一起,他们的输出需要做成一个8选一的输出。2048k输入的地址线是21位,低18位跟256k的18根地址线连一起,再利用高的3位做一个3-8的译码器,译码器的输出用来选择8块sram的输出作为最后的输出。

俏皮的香水
彪壮的身影
2025-12-04 18:54:54
2048×1536像素。iPadAir(iPad5)另外一大特色在于采用了两条天线的设计,采用2048×1536像素的屏幕,这让用户在连接WiFi时可以获得更快的连接速度并且画质更清晰。该项技术虽然并不是第一次出现在平板电脑上,但在iPad上确实还是首次。不管怎么说,相比前作两条无线网络天线的设计也算是一个不小的提升。

英俊的太阳
标致的睫毛膏
2025-12-04 18:54:54

ipadair2和ipadmini区别如下:

一、外观不同

iPad Air 2采用9.7英寸2048x156分辨率的大屏幕设计,主体由玻璃和不锈钢制成。它的设计风格与之前的iPad Air相同,只是Home键增加了触控ID功能和一圈金属边框。

新一代iPad mini的外观依然完全延续了iPad mini 2的设计风格,车身厚度为7.5mm,但iPad mini还增加了指纹识别功能,家用钥匙有金属框架,外观材料也是玻璃和不锈钢。

二、性能不同

性能方面,iPad Air 2配备了苹果最新的A8X双核处理器,运行2GB内存,与搭载苹果A7双核处理器的上一代iPad Air相比,iPad Air 2的性能提升了40%以上。

ipad mini仍配备64位苹果a7双核处理器,内存仍为1gb,它的性能与ipad air相似。因此ipad air 2的性能比ipad mini高出40%以上,性能也要好得多。

三、屏幕与电池耐久性存在差异

iPad Air 2平板电脑的屏幕尺寸为9.7英寸,分辨率为2K超清晰屏幕,屏幕精度为264ppi;而iPad Mini的屏幕尺寸为7.9英寸,2048x156,分辨率为2K,屏幕精度为26ppi。

不难看出,iPad Air 2属于大屏幕平板电脑,而iPad Mini则属于小屏幕平板电脑,因为它们都能达到2K的分辨率,所以屏幕图像质量自然很好。

iPad Air 2具有大屏幕的优势,而iPad Mini则具有小屏幕的便携功能,两个屏幕的图像质量相当。在续航能力方面,iPadAir 2和iPadMini都被官方标注为可以续航10小时,因此两者在续航能力方面相当。

四、价格比较

ipad air 2和ipad mini都有wifi和4g(单卡,所有netcom)版本,其中wifi和4g版本将在稍后发放。iPad Air 2最低售价为588元,而iPad Mini最低售价为2888元,两者的价差不大。

笨笨的小土豆
受伤的黑夜
2025-12-04 18:54:54

不一定要用的。

看你的设计风格和使用习惯,没什么一定要用,如果想试试,如果想尝试的话,可以买个2048压感的试试,京东也就400 500左右。基本上手绘板还是画插画的比较多,你要是设计一些其他的,基本用不上,除非你走的是手绘风的设计,看自己的设计风格。

而且视觉传达大部分毕业后都是从事设计方面的工作,现在的公司招设计都是招多方面技能的设计师,你除了会用PS干设计外,最好还会画画,要是小公司,老板可能还要求你会视频剪辑,真是越来越难混了。

现在画画还是挺吃香的,很多游戏或动漫公司都是把绘画方面的工作外包给个人,如果你绘画好,完全也能不找工作,自己在家画画都能赚取稿费,好的话,月收入比拿死工资还高。

视觉传达简介:

视觉传达这一术语流行于1960年在日本东京举行的世界设计大会,其内容包括:报刊环境视觉设计杂志、招贴海报及其他印刷宣传物的设计,还有电影、电视、电子广告牌等传播媒体。

它们把有关内容传达给眼睛从而进行造型的表现性设计统称为视觉传达设计电影海报,简而言之,视觉传达设计是“给人看的设计,告知的设计”——(日本《ザィン辞典》)。

笑点低的月亮
任性的哈密瓜
2025-12-04 18:54:54
iPhone界面尺寸

设备 分辨率 PPI 状态栏高度 导航栏高度 标签栏高度

iPhone6P、6SP、7P 1242×2208 px 401PPI 60px 132px 146px

iPhone6 - 6S  - 7 750×1334 px 326PPI 40px 88px 98px

iPhone5 - 5C  - 5S 640×1136 px 326PPI 40px 88px 98px

iPhone4 - 4S 640×960 px 326PPI 40px 88px 98px

iPhone &iPod Touch第一代、第二代、第三代 320×480 px 163PPI 20px 44px 49px

iPhone图标尺寸:

设备 App Store 程序应用 主屏幕 Spotlight搜索 标签栏 工具栏和导航栏

iPhone6P - 6SP  - 7(@3×) 1024×1024 px 180×180 px 114×114 px 87×87 px 75×75 px 66×66 px

iPhone6 - 6S  - 7 (@2×) 1024×1024 px 120×120 px 114×114 px 58×58 px 75×75 px 44×44 px

iPhone5 - 5C - 5S (@2×) 1024×1024 px 120×120 px 114×114 px 58×58 px 75×75 px 44×44 px

iPhone4 - 4S (@2×) 1024×1024 px 120×120 px 114×114 px 58×58 px 75×75 px 44×44 px

iPhone &iPod Touch第一代、第二代、第三代 1024×1024 px 120×120 px 57×57 px 29×29 px 38×38 px 30×30 px

iPad的设计尺寸

设备 尺寸 分辨率 状态栏高度 导航栏高度 标签栏高度

iPad 3 - 4 - 5 - 6 - Air - Air2 - mini2 2048×1536 px 264PPI 40px 88px 98px

iPad 1 - 2 1024×768 px 132PPI 20px 44px 49px

iPad Mini 1024×768 px 163PPI 20px 44px 49px

iPad图标尺寸:

设备 App Store 程序应用 主屏幕 Spotlight搜索 标签栏 工具栏和导航栏

iPad 3 - 4 - 5 - 6 - Air - Air2 - mini2 1024×1024 px 180×180 px 144×144 px 100×100 px 50×50 px 44×44 px

iPad 1 - 2 1024×1024 px 90×90 px 72×72 px 50×50 px 25×25 px 22×22 px

iPad Mini 1024×1024 px 90×90 px 72×72 px 50×50 px 25×25 px 22×22 px

Android SDK模拟机的尺寸

屏幕大小 低密度(120) 中等密度(160) 高密度(240) 超高密度(320)

小屏幕

??QVGA(240×320) ?????480×640

普通屏幕

WQVGA400(240×400)   WQVGA432(240×432)                                                    ??HVGA(320×480) WVGA800(480×800) WVGA854(480×854) 600×1024 ??640×960

大屏幕

WVGA800 *(480×800) WVGA854 *(480×854) WVGA800 *(480×800) WVGA854 *(480×854)                                  600x1024

超大屏幕

???1024×600                           1024×768  1280×768WXGA(1280×800) 1536×1152  1920×1152                                  1920×1200                             2048×1536  2560×1600

Android的图标尺寸

屏幕大小 启动图标 操作栏图标 上下文图标 系统通知图标(白色) 最细笔画

320×480 px

48×48 px 32×32 px 16×16 px 24×24 px 不小于2 px

480×800px                            480×854px                            540×960px

72×72 px 48×48 px 24×24 px 36×36 px 不小于3 px

720×1280 px

48×48 dp 32×32 dp 16×16 dp 24×24 dp 不小于2 dp

1080×1920 px

144×144 px 96×96 px 48×48 px 72×72 px 不小于6 px

Android安卓系统dp/sp/px换算表

名称 分辨率 比率 rate (针对320px) 比率 rate (针对640px) 比率 rate (针对750px)

idpi

240×320 0.75 0.375 0.32

mdpi

320×480 1 0.5 0.4267

hdpi

480×800 1.5 0.75 0.64

xhdpi

720×1280 2.25 1.125 1.042

xxhdpi

1080×1920 3.375 1.6875 1.5

主流Android手机分辨率和尺寸

设备 分辨率 尺寸 设备 分辨率 尺寸

魅族MX2 4.4英寸 800×1280 px 魅族MX3 5.1英寸 1080×1280 px

魅族MX4 5.36英寸 1152×1920 px 魅族MX4 Pro未上市 5.5英寸 1536×2560 px

三星GALAXY Note 4 5.7英寸 1440×2560 px 三星GALAXY Note 3 5.7英寸 1080×1920 px

三星GALAXY S5 5.1英寸 1080×1920 px 三星GALAXY Note II 5.5英寸 720×1280 px

索尼Xperia Z3 5.2英寸 1080×1920 px 索尼XL39h 6.44英寸 1080×1920 px

HTC Desire 820 5.5英寸 720×1280 px HTC One M8 4.7英寸 1080×1920 px

OPPO Find 7 5.5英寸 1440×2560 px OPPO N1 5.9英寸 1080×1920 px

OPPO R3 5英寸 720×1280 px OPPO N1 Mini 5英寸 720×1280 px

小米M4 5英寸 1080×1920 px 小米红米Note 5.5英寸 720×1280 px

小米M3 5英寸 1080×1920 px 小米红米1S 4.7英寸 720×1280 px

小米M3S未上市 5英寸 1080×1920 px 小米M2S 4.3英寸 720×1280 px

华为荣耀6 5英寸 1080×1920 px 锤子T1 4.95英寸 1080×1920 px

LG G3 5.5英寸 1440×2560 px OnePlus One 5.5英寸 1080×1920 px

主流浏览器的界面参数与份额

浏览器 状态栏 菜单栏 滚动条 市场份额(国内)

Chrome 浏览器 22 px(浮动出现) 60 px 15 px 42.1%

火狐浏览器 20 px 132 px 15 px 1%

IE浏览器 24 px 120 px 15 px 34%

360 浏览器 24 px 140 px 15 px 28%

遨游浏览器 24 px 147 px 15 px 1%

搜狗浏览器 25 px 163 px 15 px 3.8%

系统分辨率统计

分辨率 占有率 分辨率 占有率

1920×1080

13.8%

1366×768

10.2%

360×640

7.9%

1440×900

7.7%

720×1280

6.4%

1024×768

5.1%

320×568

3.7%

1600×900

3.5%

1080×1920

3.3%

375×667

3.2%