C语言编写俄罗斯方块论文.doc_第1页
C语言编写俄罗斯方块论文.doc_第2页
C语言编写俄罗斯方块论文.doc_第3页
C语言编写俄罗斯方块论文.doc_第4页
C语言编写俄罗斯方块论文.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

俄罗斯方块 学 号: 班 级: 姓 名: 指导教师: 完成日期:2012年5月目 录1.引言11.1开发工具11.1.1 C是中级预言11.1.2 C是结构化语言11.1.3 C语言功能齐全11.1.4 C语言可移植性好12 游戏设计22.1游戏设计要求22.1.1. 设计题目:俄罗斯方块游戏22.1.2. 设计内容:22.1.3. 功能模块划分:22.2 游戏设计思想22.2.1游戏界面:22.2.2 设计思路22.3:游戏功能32.3.1:开始部分32.3.2.运行部分33.实验总结:43.1 开发背景与需求分析43.2 系统功能介绍44. 核心代码:8总结21参考文献:22基于C语言的俄罗斯方块游戏摘要:俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。关键词:C语言;心得体会;影响1.引言随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界.人们不在拘泥于一小块天地.加班,出差成了现代人不可避免的公务.而此时一款可以随时随地娱乐的游戏成了必需品.在手机和电脑成为人们日用品的社会,一款能在其上能便捷运行的游戏成为买家的参考点.现在我们所要设计的这一款基于C语言的游戏贪吃蛇,就是满足以上要求而设计出来的,希望能给玩家带来娱乐.贪吃蛇这一游戏简单易行,操作方便,娱乐性较强,吸引了不少人.这一款游戏紧紧地抓住了人们的心理,虽然简单,却起乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具.1.1开发工具C/C+程序设计学习与试验系统该系统继承了Turbo C2.0/C+3.0、GCC、Visua C+6.0这四种常见的编译器,可以很好满足目前主流的C语言教材的实验需求。C语言具有下列特点:1.1.1 C是中级预言它把高级语言的基本结构和语句与低级语言的实用性结合起来,C语言可以像汇编语言一样对位、字节和地址进行操作,通常还是称C为高级语言。1.1.2 C是结构化语言结构化语言的特点是程序的各个部分除了必要地数据交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用,维护及调试。1.1.3 C语言功能齐全C语言具有多种数据类型,并引入了指针概念,可使程序效率更高;C语言也具有强大的图形功能;具有较强的计算功能、逻辑判断功能。1.1.4 C语言可移植性好与汇编语言相比,C语言程序适用范围大,可用于各种操作系统和各种型号的计算机。2 游戏设计2.1游戏设计要求2.1.1. 设计题目:俄罗斯方块游戏2.1.2. 设计内容:一组由4个小型正方形组成的规则图形,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。如果未被消除的方块堆放的高度超过场地所规定的最大高度则游戏结束。2.1.3. 功能模块划分:系统功能模块2.2 游戏设计思想2.2.1游戏界面:方块堆积。遇整则消。2.2.2 设计思路 1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为10,列高为20,以每个小正方形为单位。2.、一组由4个小型正方形组成的规则图形,英文称为Tetromino,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。I:一次最多消除四层 J(左右):最多消除三层,或消除二层 L:最多消除三层,或消除二层 O:消除一至二层 S(左右):最多二层,容易造成孔洞 Z (左右):最多二层,容易造成孔洞 T:最多二层 (1)部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。 方块会从区域上方开始缓慢继续落下。 (2)玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。 (3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。 (4)当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。 (5)当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。 (6)一般来说,游戏还会提示下一个要落下的方块,熟练的玩家会计算到下一个方块,评估现在要如何进行。由于游戏能不断进行下去对商业用游戏不太理想,所以一般还会随着游戏的进行而加速提高难度。 3、通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。 4、如果未被消除的方块堆放的高度超过场地所规定的最大高度(并不一定是20或者玩家所能见到的高度),则游戏结束。 具体到每一款不同的游戏,其中的细节规则都可能有千差万别,但是以上的基本规则是相同的。2.3:游戏功能2.3.1:开始部分游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。2.3.2.运行部分 俄罗斯方块的要求为:不同形状组合的方块从界面上方落下。通过键盘上的四个光标控制方块下落时的形状转换和下落方向。方块堆积在一起,将区域占满时则会消除以增加游戏分数。整个游戏过程分为三个步骤:1、 按游戏界面的开始按钮或者F2键来开始游戏,自己使用右边的窗口,对手使用左边的窗口2、 键盘操作:系统缺省设置使用右边的窗口,用光标操作,左移一格;右移一格;旋转方块; 方块丢下(方块下落到底),End健可以一格格的下落,用户还可以自定义习惯的按键来操作游戏。 3、 计分牌显示的内容:“分数”为双方本局的分数,计分标准为下落一个块10分,一次消一行100分、2行200分、3行400分、4行800分。等级”为双方的游戏设置等级,当分数达到一定的值,等级就会提升、速度加快。“行数”第一行为双方消的行数,第二行是送给对方的行数。“比分”为双方赢的局数。2.3.3:结束部分:游戏结束时,显示“GAME OVER”3.实验总结: 3.1 开发背景与需求分析随着网络技术的发展,人们的生活越来越离不开网络,网络给人们带来了各种各样的信息和更多更新的娱乐。据统计。每天上网的人群中75%的人用来丰富自己的生活。其中游戏最为常见和普遍。所以,这次课程设计我想实现一个小游戏:俄罗斯方块。需求分析1) 游戏面板(画布)GameCanvas类,完成游戏显示;2) 方块绘画drawUnit类,方块下落过程中的各种形态;3) 主界面实现游戏的开始,退出,暂停,提高级数,降低级数功能及图像界面排版;4) 通过键盘按键实现游戏,并且可以调节游戏速度。3.2 系统功能介绍 俄罗斯方块是一个非常复杂但比较有趣并且耐玩的游戏,相信很多人对俄罗斯方块并不陌生,如下图所示,游戏中共有七种方块,每种方块都有四个方格组成。 这七种方块可以旋转90度、180度、270度,因此每种方块有四种状态,七种方块总有28种状态,这28种状态的方块随机产生,自由下落,落下时可由玩家通过键盘上的上、下、左、右控制键来控制方块的反转、移动和加速下落。如果下落时,方块填满某一行则这一行消失,同时给玩家加分,若由存在空格的方块填满整个窗口,则游戏结束。图1-1 初始状态图1-2 开始游戏图1-3 消除一行图1-4 消除两行图1-5 消除四行图1-6 游戏结束4. 核心代码: import java.awt.*;import java.awt.event.*;/俄罗斯方块类 public class computer extends Frame public static boolean isPlay = false; public static int level = 1, score = 0; public static TextField scoreField, levelField; public static MyTimer timer; GameCanvas gameScr;/声明一个属于画布类得变量 public static void main(String argus) computer ers = new computer(俄罗斯方块游戏 V1.0 Author:Vincent);/运用构造方法为框架名 WindowListener win_listener = new WinListener();/定义一个窗口监听事件对象 ers.addWindowListener(win_listener);/为框架添加该监听器 computer(String title)/ 俄罗斯方块类的构造方法 super(title);/调用父类得构造方法 setSize(600, 480);/设置框架的尺寸 setLayout(new GridLayout(1, 2);/设置框架的布局流 gameScr = new GameCanvas(); gameScr.addKeyListener(gameScr);/为该对象注册键盘点击监听器 timer = new MyTimer(gameScr); timer.setDaemon(true); timer.start(); timer.suspend(); add(gameScr); Panel rightScr = new Panel(); rightScr.setLayout(new GridLayout(2, 1, 0, 30); rightScr.setSize(120, 500); add(rightScr); / 右边信息窗体的布局 MyPanel infoScr = new MyPanel(); infoScr.setLayout(new GridLayout(4, 1, 0, 5); infoScr.setSize(120, 300); rightScr.add(infoScr); / 定义标签和初始值 Label scorep = new Label(分数:, Label.LEFT); Label levelp = new Label(级数:, Label.LEFT); scoreField = new TextField(8); levelField = new TextField(8); scoreField.setEditable(false); levelField.setEditable(false); infoScr.add(scorep); infoScr.add(scoreField); infoScr.add(levelp); infoScr.add(levelField); scorep.setSize(new Dimension(20, 60); scoreField.setSize(new Dimension(20, 60); levelp.setSize(new Dimension(20, 60); levelField.setSize(new Dimension(20, 60); scoreField.setText(0); levelField.setText(1); / 右边控制按钮窗体的布局 MyPanel controlScr = new MyPanel(); controlScr.setLayout(new GridLayout(5, 1, 0, 5); rightScr.add(controlScr); / 定义按钮play Button play_b = new Button(开始游戏); play_b.setSize(new Dimension(50, 200); play_b.addActionListener(new Command(Command.button_play, gameScr); / 定义按钮Level UP Button level_up_b = new Button(提高级数); level_up_b.setSize(new Dimension(50, 200); level_up_b.addActionListener(new Command(Command.button_levelup, gameScr); / 定义按钮Level Down Button level_down_b = new Button(降低级数); level_down_b.setSize(new Dimension(50, 200); level_down_b.addActionListener(new Command(Command.button_leveldown, gameScr); / 定义按钮Level Pause Button pause_b = new Button(游戏暂停); pause_b.setSize(new Dimension(50, 200); pause_b.addActionListener(new Command(Command.button_pause, gameScr); / 定义按钮Quit Button quit_b = new Button(退出游戏); quit_b.setSize(new Dimension(50, 200); quit_b.addActionListener(new Command(Command.button_quit, gameScr); controlScr.add(play_b); controlScr.add(level_up_b); controlScr.add(level_down_b); controlScr.add(pause_b); controlScr.add(quit_b); setVisible(true); gameScr.requestFocus(); / 重写MyPanel类,使Panel的四周留空间class MyPanel extends Panel public Insets getInsets() return new Insets(30, 50, 30, 50); / 游戏画布类class GameCanvas extends Canvas implements KeyListener final int unitSize = 30; / 小方块边长 int rowNum; / 正方格的行数 int columnNum; / 正方格的列数 int maxAllowRowNum; / 允许有多少行未削 int blockInitRow; / 新出现块的起始行坐标 int blockInitCol; / 新出现块的起始列坐标 int scrArr; / 屏幕数组 Block b; / 对方快的引用 / 画布类的构造方法 GameCanvas() rowNum = 15; columnNum = 10; maxAllowRowNum = rowNum - 2; b = new Block(this); blockInitRow = rowNum - 1; blockInitCol = columnNum / 2 - 2; scrArr = new int3232; / 初始化屏幕,并将屏幕数组清零的方法 void initScr() for (int i = 0; i rowNum; i+) for (int j = 0; j columnNum; j+) scrArrij = 0; b.reset(); repaint(); / 重新刷新画布方法 public void paint(Graphics g) for (int i = 0; i rowNum; i+) for (int j = 0; j columnNum; j+) drawUnit(i, j, scrArrij); / 画方块的方法 public void drawUnit(int row, int col, int type) scrArrrowcol = type; Graphics g = getGraphics(); switch (type) / 表示画方快的方法 case 0: g.setColor(Color.black); break; / 以背景为颜色画 case 1: g.setColor(Color.blue); break; / 画正在下落的方块 case 2: g.setColor(Color.magenta); break; / 画已经落下的方法 g.fill3DRect(col * unitSize, getSize().height - (row + 1) * unitSize, unitSize, unitSize, true); g.dispose(); public Block getBlock() return b; / 返回block实例的引用 / 返回屏幕数组中(row,col)位置的属性值 public int getScrArrXY(int row, int col) if (row = rowNum | col = columnNum) return (-1); else return (scrArrrowcol); / 返回新块的初始行坐标方法 public int getInitRow() return (blockInitRow); / 返回新块的初始行坐标 / 返回新块的初始列坐标方法 public int getInitCol() return (blockInitCol); / 返回新块的初始列坐标 / 满行删除方法 void deleteFullLine() int full_line_num = 0; int k = 0; for (int i = 0; i rowNum; i+) boolean isfull = true; L1: for (int j = 0; j columnNum; j+) if (scrArrij = 0) k+; isfull = false; break L1; if (isfull) full_line_num+; if (k != 0 & k - 1 != i & !isfull) for (int j = 0; j columnNum; j+) if (scrArrij = 0) drawUnit(k - 1, j, 0); else drawUnit(k - 1, j, 2); scrArrk - 1j = scrArrij; for (int i = k - 1; i rowNum; i+) for (int j = 0; j columnNum; j+) drawUnit(i, j, 0); scrArrij = 0; computer.score += full_line_num; computer.scoreField.setText( + computer.score); / 判断游戏是否结束方法 boolean isGameEnd() for (int col = 0; col columnNum; col+) if (scrArrmaxAllowRowNumcol != 0) return true; return false; public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) / 处理键盘输入的方法 public void keyPressed(KeyEvent e) if (!computer.isPlay) return; switch (e.getKeyCode() case KeyEvent.VK_DOWN: b.fallDown(); break; case KeyEvent.VK_LEFT: b.leftMove(); break; case KeyEvent.VK_RIGHT: b.rightMove(); break; case KeyEvent.VK_UP: b.leftTurn(); break; / 处理控制类class Command implements ActionListener static final int button_play = 1; / 给按钮分配编号 static final int button_levelup = 2; static final int button_leveldown = 3; static final int button_quit = 4; static final int button_pause = 5; static boolean pause_resume = true; int curButton; / 当前按钮 GameCanvas scr; / 控制按钮类的构造方法 Command(int button, GameCanvas scr) curButton = button; this.scr = scr; / 按钮执行方法 public void actionPerformed(ActionEvent e) switch (curButton) case button_play: if (!computer.isPlay) scr.initScr(); computer.isPlay = true; computer.score = 0; computer.scoreField.setText(0); computer.timer.resume(); scr.requestFocus(); break; case button_levelup: if (computer.level 1) computer.level-; computer.levelField.setText( + computer.level); computer.score = 0; computer.scoreField.setText( + computer.score); scr.requestFocus(); break; case button_pause: if (pause_resume) computer.timer.suspend(); pause_resume = false; else computer.timer.resume(); pause_resume = true; scr.requestFocus(); break; case button_quit: System.exit(0); / 方块类class Block static int pattern = 0x0f00, 0x4444, 0x0f00, 0x4444 ,/ 用十六进至表示,本行表示长条四种状态 0x04e0, 0x0464, 0x00e4, 0x04c4 , 0x4620, 0x6c00, 0x4620, 0x6c00 , 0x2640, 0xc600, 0x2640, 0xc600 , 0x6220, 0x1700, 0x2230, 0x0740 , 0x6440, 0x0e20, 0x44c0, 0x8e00 , 0x0660, 0x0660, 0x0660, 0x0660 ; int blockType; / 块的模式号(0-6) int turnState; / 块的翻转状态(0-3) int blockState; / 快的下落状态 int row, col; / 块在画布上的坐标 GameCanvas scr; / 块类的构造方法 Block(GameCanvas scr) this.scr = scr; blockType = (int) (Math.random() * 1000) % 7; turnState = (int) (Math.random() * 1000) % 4; blockState = 1; row = scr.getInitRow(); col = scr.getInitCol(); / 重新初始化块,并显示新块 public void reset() blockType = (int) (Math.random() * 1000) % 7; turnState = (int) (Math.random() * 1000) % 4; blockState = 1; row = scr.getInitRow(); col = scr.getInitCol(); dispBlock(1); / 实现“块”翻转的方法 public void leftTurn() if (assertValid(blockType, (turnState + 1) % 4, row, col) dispBlock(0); turnState = (turnState + 1) % 4; dispBlock(1); / 实现“块”的左移的方法 public void leftMove() if (assertValid(blockType, turnState, row, col - 1) dispBlock(0); col-; dispBlock(1); / 实现块的右移 public void rightMove() if (assertValid(blockType, turnState, row, col + 1) dispBlock(0); col+; dispBlock(1); / 实现块落下的操作的方法 public boolean fallDown() if (blockState = 2) return (false); if (assertValid(blockType, turnState, row - 1, col) dispBlock(0); row-; dispBlock(1); return (true); else blockState = 2; dispBlock(2); return (false); / 判断是否正确的方法 boolean assertValid(int t, int s, int row, int col) int k = 0x8000; for (int i = 0; i 4; i+) for (int j = 0; j 4; j+) if (int) (patternts & k) != 0) int temp = scr.getScrArrXY(row - i, col + j); if (temp 1; return true; / 同步显示的方法 public synchronized void dispBlock(int s) int k = 0x8000; for (int i = 0; i 4; i+) for (int j = 0; j 1; / 定时线程class MyTimer extends Thread GameCanvas scr; public MyTimer(GameCanvas scr) this.scr = scr; public void run() while (true) try sleep(10 - computer.level + 1) * 100); catch (InterruptedException e) if (!scr.getBlock().fallDown() scr.deleteFullLine(); if (scr.isGameEnd() computer.isPlay = false; suspend(); else scr.getBlock().reset(); class WinListener extends WindowAdapter public void windowClosing(WindowEvent l) System.exit(0); 总结 1感悟:当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在这么长的时间里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。我做的是做俄罗斯方块游戏。简单的一个,但对我来说却是一个很大的困难。更加是第一次做基于C语言的课程设计,所以连续几天翻阅书籍或是参考网上内容却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟水平有限,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,所以就在网上下载的程序的基础上开始行动了,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在该游戏设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。2感谢:经过两个星期的苦心钻研,系统终于制作完毕。在本次课程设计中困难遇到不少,也让我学到了很多。在这次系统开发的过程中,我深深地体会到了做一个系统,首先进行需求分析的重要性。了解了一个系统的制作,从功能分析到功能模块分析,与其他系统的关系,这些都有待以后进一步的改进。通过实践对我以后的学习是一笔不小的财富! 在此,感谢班上同学对我的帮助和指点,没有他们所提供的资料,仅凭我个人力量,在短短的两周时间里是很难完成这个设计的。更要感谢的是我的老师,感谢老师孜孜不倦的教诲,一丝不苟的精神和一视同仁的教学风格。我会仅记老师的教诲,一步一个脚印的完成自己的学业!参考文献:1. 裘宗燕 著,从问题到程序科学出版社,北京大学出版社,1999年4月。2. C程序设计(第二版),谭浩强编,清华大学出版社,1999年12月。3. C语言编程常见问题解答,美Paul S. R. Chishohm等著,张芳妮 吕波译,清华大学出版社,11996年12月。4. The C Programming Language,by Brian W. Kernighan and Dennis M. Ritchie.,Pubilished by Prentice-Hall in 1988。5. 朱若愚.数据结构M. 北京: 电子工业出版社, 2006.16. 傅清祥,王晓东. 数据结构与算法设计M. 北京: 电子工业出版社, 2006.37. 李春葆. 数据结构(C语言版)习题与解析M.北京:清华大学出版社, 2006.18. 刘大有.数据结构M. 北京: 高等教育出版社, 2006.39. 王敬华,陈静. C语言程序设计M. 北京: 清华大学出版社, 2007.1010. 徐孝凯.数据结构简明教程.M. 北京: 清华大学出版社, 2006.04课程设计俄罗斯方块游戏源代码本程序共三个类,建一个包 square。把三个类都封装到一个包里面,三个类分别是 Controller, Main , Square package square;import javax.swing.JPanel;import java.awt.Color; / 事倒入java程序所需要的类库文件。如果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论