




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计计算算机机图图形形学学 设设 计计 报报 告告 专业班级 专业班级 NET113 NET113 学学 号 号 201107082000201107082000 姓姓 名 名 吉祥草吉祥草 指导老师 指导老师 杜俊俐杜俊俐 中原工学院软件学院中原工学院软件学院 20132013 年年 6 6 月月 1818 日日 目目 录录 项目一项目一 图形转换的绘制图形转换的绘制 C C 1 1 项目二项目二 画图工具画图工具 JAVA JAVA 6 6 项目三项目三 红绿灯绘制红绿灯绘制 JAVAJAVA 9 9 项目四项目四 五子棋游戏五子棋游戏 JAVAJAVA 1313 1 项目一名称 图形转换的绘制项目一名称 图形转换的绘制 一 一 设计目的设计目的 1 练习 2D 图形的绘制技术 2 练习 2D 图形的几何变换技术 3 练习 2D 图形的填充技术 二 二 设计内容设计内容 编程实现五星红旗的绘制 三 三 设计方案设计方案 与实现与实现 设计中的基本绘图功能及绘图函数 设计的总体安排 用 C 语言编写的程序 首先用自己学的专业语言来编写 2D 图形的绘制以 及转换的技术 图形数据及确定 开始为转变的图形总体是有无数个空心圆组成的 每个圆圆心是同一点 但每个圆有 不同的半径 圆的边缘设置是白色的 除了边缘就是绿色的 它们的边缘间的距离相等 转变后的图形是无数个空心正方形和一个实心的绿色圆组成 正方形边缘的间距也是等长 的 3 设计流程 1 为便于确定复杂图形之位置 先找出中心点 将它视为圆心 先设置一个半径 为 150 长的绿色实心圆 然后画白色的圆 其中半色空心圆 半径要依次累加相同的数字 2 转变后的图形也用相同方法 圆心 绿色实心圆的半径都相同 不过不是设置 白色的圆 而是白色的正方形 边长也要依次累加相同的数字 四 四 设计结果设计结果 2 转换前的图形 转换后的图形 抓图 抓图 3 五 设计总结五 设计总结 陈述在程序设计和调试中遇到的主要问题及解决过程 对所用的知识深入理解的作用 设计语言等相应功能的掌握和程序设计能力的提高以及经验和体会 分析并提出改进设想 等 在设计过程中 我们所学的 C 知识基础是很重要的 基础弄通 即使不会框架 也可以有一份事情做 同时在做此程序时 也发现了很多的问题 比如说知识的健忘 在 做的时候竟然不知道该怎么编程 这就在提醒我们要时时刻刻得学习 不要对自己在学习 上的松懈 并且 C 相关的知识虽然有点杂 有点多 但多学有益 让你永远不会松懈 这 使我能更上一层楼 六 附录六 附录 using System using System Collections Generic using System ComponentModel using System Data using System Drawing using System Text using System Windows Forms namespace glf Creatione public partial class 图形转换 Form public 图形转换 InitializeComponent Graphics g int i 0 private void button1 Click object sender EventArgs e g FillRectangle new SolidBrush panel1 BackColor 0 0 panel1 Width panel1 Height i if i 2 1 drawR 转换前的图形 else 4 drawZFX 转换后的图形 private void Form1 Paint object sender PaintEventArgs e drawR 转换前的图形 private void drawZFX 转换后的图形 g panel1 CreateGraphics g FillEllipse new SolidBrush Color Green 0 0 300 300 绿色实心圆 for int i 0 i int x r SolidBrush b r Convert ToInt16 150 i 5 1 Math Sqrt 2 x 150 r if r 0 break if i 2 0 b new SolidBrush Color White else b new SolidBrush Color Green g FillRectangle b x x r 2 r 2 private void drawR 转换后的图形 g panel1 CreateGraphics g FillRectangle new SolidBrush Color White 0 0 300 300 白色矩形 g FillEllipse new SolidBrush Color Green 0 0 300 300 绿色实心圆 5 SolidBrush b int x r for int i 1 i x i 5 r 300 2 x if r 0 break if i 2 0 b new SolidBrush Color White else b new SolidBrush Color Green g FillEllipse b x x r r 6 项目二名称 画图工具绘制项目二名称 画图工具绘制 一 一 设计目的设计目的 1 练习 2D 图形的绘制技术 2 练习 2D 图形的几何变换技术 3 练习 2D 图形的填充技术 二 二 设计内容设计内容 编程实现画图工具的绘制 三 三 设计方案与实现设计方案与实现 1 因需要在模板上画图 所以应先构建一个模板 2 为了实现用鼠标画图 根据需求增加鼠标和键盘的监听器 3 实现画图功能 四 四 设计结果设计结果 抓图 抓图 五 设计总结五 设计总结 这学期刚刚学完选修的 Java 语言 正好也拿来练习一下 编写此程序时 学习过 Java 的各位对这个集合框架并不陌生 对 java util 这个 package 肯定也不陌生 不 知道大家查询 API 的时候怎么去审视或者分析其中的一个 package 每个包最重要的两 个部分就是 interfaces 和 classes 接口代表了它能做什么 实现类则代表了它如何去做 关注实现类之前 我们应该先理解清楚它的来源接口 不管在 j2se 还是 j2ee 中 都应该 是这样 那么我们先看这三个接口 List Set Map 也许有些人不太熟悉这三个名字 但相信大部分人都熟悉 ArrayList LinkedList TreeSet HashSet HashMap Hashtable 等实现类的名 字 它们的区别也是满容易理解的 List 放可以重复的对象集合 Set 放不可重复的对象 组合 而 Map 则放 这样的名值对 Key 不可重复 Value 可以 所以 7 总结起来就是要想编程序 必须要了解程序本身都需要什么 六 附录六 附录 import javax swing import java awt import java awt event public class Exercise12 4 extends JFrame private DrawMaze mazePanel new DrawMaze public Exercise12 4 添加模板输出所花的图形 getContentPane add mazePanel mazePanel setFocusable true public static void main String args Exercise12 4 frame new Exercise12 4 frame setTitle Exercise12 4 frame setSize 350 150 frame setDefaultCloseOperation JFrame EXIT ON CLOSE frame setVisible true class DrawMaze extends JPanel implements KeyListener int x y previousX previousY public DrawMaze addKeyListener this 重构监听器 public void keyReleased KeyEvent e public void keyTyped KeyEvent e public void keyPressed KeyEvent e switch e getKeyCode case KeyEvent VK DOWN 构造向下箭头的监听器 previousY y previousX x y 10 break case KeyEvent VK UP 构造向上箭头的监听器 previousY y previousX x y 10 break case KeyEvent VK LEFT 构造向左箭头的监听器 previousX x 8 previousY y x 10 break case KeyEvent VK RIGHT 构造向右箭头的监听器 previousX x previousY y x 10 repaint 9 项目三名称 红绿灯绘制项目三名称 红绿灯绘制 一 一 设计目的设计目的 1 练习 2D 图形的绘制技术 2 练习 2D 图形的几何变换技术 3 练习 2D 图形的填充技术 二 二 设计内容设计内容 编程实现红绿灯的绘制 三 三 设计方案与实现设计方案与实现 1 为实现红绿灯的绘制 先构建模板 2 为模板添加三个按钮 并在画板中实现红黄绿三灯的闪烁 3 为三个按钮增加监听器 实现点击即可亮灯 4 测试程序 是否有漏洞 四 四 设计结果设计结果 抓图 五 设计总结五 设计总结 编写程序最终要的是要知道程序应该怎么去编写 要怎么去做才能实现程序的基本功能 从编写这个程序中我发现设计模式只是对一类问题的一种通用解决办法 只要是面向对象 的编程预言都可以用得上最好的设计方法就是自己编写一个简单的程序 哪怕是一个简单 的应用就足够了 六 附录六 附录 10 import java awt BorderLayout import java awt Graphics import java awt Color import java awt GridLayout import java awt event ActionEvent import java awt event ActionListener import java util import javax swing JPanel import javax swing JFrame import javax swing ButtonGroup import javax swing JRadioButton public class lightP1 extends JFrame 构建红绿灯模板 int flag 0 myPanel panel 1 new myPanel public lightP1 super setTitle TrafficLight getContentPane setLayout new BorderLayout 红绿灯分布 final JPanel panel new JPanel getContentPane add panel BorderLayout NORTH final ButtonGroup buttonGroup new ButtonGroup final JRadioButton jrbRed new JRadioButton 构建红黄绿三个按 键 jrbRed setText Red panel add jrbRed final JRadioButton jrbYellow new JRadioButton jrbYellow setText Yellow panel add jrbYellow final JRadioButton jrbGreen new JRadioButton jrbGreen setText Green buttonGroup add jrbRed buttonGroup add jrbYellow buttonGroup add jrbGreen panel add jrbGreen jrbRed addActionListener new ActionListener 分别为三个按键增 加监听器 public void actionPerformed ActionEvent e g setColor Color red flag 1 panel 1 setColor flag panel 1 repaint jrbYellow addActionListener new ActionListener 11 public void actionPerformed ActionEvent e flag 2 panel 1 setColor flag panel 1 repaint jrbGreen addActionListener new ActionListener public void actionPerformed ActionEvent e flag 3 panel 1 setColor flag panel 1 repaint getContentPane add panel 1 BorderLayout CENTER Timer timer new Timer timer schedule new MyTimerTask 1000 1000 class MyTimerTask extends TimerTask public void run for int i 1 i 3 i try Thread sleep 1000 catch Exception e flag i Thread sleep 3000 panel 1 setColor flag panel 1 repaint System out println flag flag Main method public static void main String args lightP1 frame new lightP1 frame setDefaultCloseOperation JFrame EXIT ON CLOSE frame setSize 400 450 frame setVisible true class myPanel extends JPanel 12 int color 0 protected void paintComponent final Graphics g 在画板中实现 红绿灯 public void paint Graphics g 设计红黄绿三灯的所在位置 super paint g g drawRect 130 25 40 120 if color 1 g setColor Color red g fillOval 135 30 30 30 g setColor Color black g fillOval 135 70 30 30 g setColor Color black g fillOval 135 110 30 30 else if color 2 g setColor Color black g fillOval 135 30 30 30 g setColor Color yellow g fillOval 135 70 30 30 g setColor Color black g fillOval 135 110 30 30 else if color 3 g setColor Color black g fillOval 135 30 30 30 g setColor Color black g fillOval 135 70 30 30 g setColor Color green g fillOval 135 110 30 30 else g setColor Color black g fillOval 135 30 30 30 g setColor Color black g fillOval 135 70 30 30 g setColor Color black g fillOval 135 110 30 30 public void setColor int color this color color 13 项目四名称 五子棋制作项目四名称 五子棋制作 一 一 设计目的设计目的 1 练习 2D 图形的绘制技术 2 练习 2D 图形的几何变换技术 3 练习 2D 图形的填充技术 二 二 设计内容设计内容 编程实现游戏五子棋 三 三 设计方案与实现设计方案与实现 1 设计模板 为了能让棋子显示 先构造五子棋的模板 2 设计五子棋的棋子以及其颜色 3 设计程序判断五子棋的五个相同旗子是否在同一条直线或斜线上 4 判断五子棋的输赢 并用对话框的形式输出 5 测试程序 查询漏洞 四 四 设计结果设计结果 抓图 五 设计总结五 设计总结 其实 我觉得用 C 也好 Java 语言也好 都有相同之处 当然也有各自的特点 编 写程序最终要的是要知道程序应该怎么去编写 要怎么去做才能实现程序的基本功能 从编 写这个程序中我发现设计模式只是对一类问题的一种通用解决办法 只要是面向对象的编 程预言都可以用得上最好的设计方法就是自己编写一个简单的程序 哪怕是一个简单的应 用就足够了 14 所以一定要知道程序该怎么编写 该怎么做出模型 怎么添加东西来使程序能够运行 六 附录六 附录 package dyb import java applet import java awt import java awt event import java applet Applet import java awt Color import javax swing JOptionPane public class 五子棋 extends Applet implements MouseListener MouseMotionListener int color Qizi 0 旗子的颜色标识 0 白子 1 黑子 int intGame Start 0 游戏开始标志 0 未开始 1 游戏中 int intGame Body new int 16 16 设置棋盘棋子状态 0 无子 1 白 子 2 黑子 Checkbox ckbHB new Checkbox 2 CheckboxGroup ckgHB new CheckboxGroup public void init setLayout null addMouseListener this color Qizi 0 Game start csh public void mousePressed MouseEvent e public void mouseClicked MouseEvent e Graphics g getGraphics int x1 y1 x1 e getX y1 e getY if e getX 300 e getY 300 return if x1 20 10 x1 20 if y1 20 10 y1 20 x1 x1 20 20 15 y1 y1 20 20 set Qizi x1 y1 public void mouseEntered MouseEvent e public void mouseExited MouseEvent e public void mouseReleased MouseEvent e public void mouseDragged MouseEvent e public void mouseMoved MouseEvent e public void paint Graphics g draw qipan g public void set Qizi int x int y 落子 if intGame Start 0 判断游戏未开始 return if intGame Body x 20 y 20 0 return Graphics g getGraphics if color Qizi 1 判断黑子还是白子 g setColor Color black color Qizi 0 else g setColor Color white color Qizi 1 g fillOval x 10 y 10 20 20 intGame Body x 20 y 20 color Qizi 1 if Game win 1 x 20 y 20 判断输赢 JOptionPane showMessageDialog this Get qizi color color Qizi 赢了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 if Game win 2 x 20 y 20 判断输赢 16 JOptionPane showMessageDialog this Get qizi color color Qizi 赢了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 if Game win 3 x 20 y 20 判断输赢 JOptionPane showMessageDialog this Get qizi color color Qizi 赢 了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 if Game win 4 x 20 y 20 判断输赢 JOptionPane showMessageDialog this Get qizi color color Qizi 赢 了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 public String Get qizi color int x if x 0 return 黑子 else return 白子 public void draw qipan Graphics G 画棋盘 15 15 G setColor Color ORANGE G fill3DRect 10 10 300 300 true G setColor Color black for int i 1 i 16 i G drawLine 20 20 i 300 20 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津电子信息职业技术学院《岩土钻孔工程》2023-2024学年第二学期期末试卷
- 湖北省武汉市光谷实验等四校2024-2025学年中考模拟押题卷(金卷二)英语试题试卷含答案
- 惠州卫生职业技术学院《杂技艺术鉴赏》2023-2024学年第二学期期末试卷
- 濮阳石油化工职业技术学院《文化产品创新设计》2023-2024学年第二学期期末试卷
- 唐山幼儿师范高等专科学校《基础医学概论Ⅱ3(微生物学)》2023-2024学年第二学期期末试卷
- 河北师范大学汇华学院《审计基础》2023-2024学年第二学期期末试卷
- 湖北省咸宁市马桥中学2024-2025学年初三下学期5月模拟考试物理试题含解析
- 南阳师范学院《工业设计史》2023-2024学年第二学期期末试卷
- 浙江省杭州某中学2024届高考物理二模试卷含解析
- 人员劳动合同(2025年版)
- 外固定架课件
- 结业证书文档模板可编辑
- 《雷锋叔叔你在哪里》教学案例
- DB32-T 2798-2015高性能沥青路面施工技术规范-(高清现行)
- DBS62∕002-2021 食品安全地方标准 黄芪
- 译林版五年级英语下册 Unit 6 第4课时 教学课件PPT小学公开课
- API-620 大型焊接低压储罐设计与建造
- 部编统编版五年级下册道德与法治全册教案教学设计与每课知识点总结
- 浙江省杭州市介绍(课堂PPT)
- 路面及绿化带拆除和修复方案
- 001压力管道安装安全质量监督检验报告
评论
0/150
提交评论