表1 CheckerDragjava
// CheckerDragjavaimport javaawt;import javaawtevent;public class CheckerDrag extends javaappletApplet{ // Dimension of checkerboard square // 棋盘上每个小方格的尺寸 final static int SQUAREDIM = 40; // Dimension of checkerboard -- includes black outline // 棋盘的尺寸 – 包括黑色的轮廓线 final static int BOARDDIM = 8 SQUAREDIM + 2; // Dimension of checker -- 3/4 the dimension of a square // 棋子的尺寸 – 方格尺寸的3/4 final static int CHECKERDIM = 3 SQUAREDIM / 4; // Square colors are dark green or white // 方格的颜色为深绿色或者白色 final static Color darkGreen = new Color (0, 128, 0); // Dragging flag -- set to true when user presses mouse button over checker // and cleared to false when user releases mouse button // 拖动标记 --当用户在棋子上按下鼠标按键时设为true, // 释放鼠标按键时设为false boolean inDrag = false; // Left coordinate of checkerboard's upper-left corner // 棋盘左上角的左方向坐标 int boardx; // Top coordinate of checkerboard's upper-left corner //棋盘左上角的上方向坐标 int boardy; // Left coordinate of checker rectangle origin (upper-left corner) // 棋子矩形原点(左上角)的左方向坐标 int ox; // Top coordinate of checker rectangle origin (upper-left corner) // 棋子矩形原点(左上角)的上方向坐标 int oy; // Left displacement between mouse coordinates at time of press and checker // rectangle origin // 在按键时的鼠标坐标与棋子矩形原点之间的左方向位移 int relx; // Top displacement between mouse coordinates at time of press and checker // rectangle origin // 在按键时的鼠标坐标与棋子矩形原点之间的上方向位移 int rely; // Width of applet drawing area // applet绘图区域的宽度 int width; // Height of applet drawing area // applet绘图区域的高度 int height; // Image buffer // 图像缓冲 Image imBuffer; // Graphics context associated with image buffer // 图像缓冲相关联的图形背景 Graphics imG; public void init () { // Obtain the size of the applet's drawing area // 获取applet绘图区域的尺寸 width = getSize ()width; height = getSize ()height; // Create image buffer // 创建图像缓冲 imBuffer = createImage (width, height); // Retrieve graphics context associated with image buffer // 取出图像缓冲相关联的图形背景 imG = imBuffergetGraphics (); // Initialize checkerboard's origin, so that board is centered // 初始化棋盘的原点,使棋盘在屏幕上居中 boardx = (width - BOARDDIM) / 2 + 1; boardy = (height - BOARDDIM) / 2 + 1; // Initialize checker's rectangle's starting origin so that checker is // centered in the square located in the top row and second column from // the left // 初始化棋子矩形的起始原点,使得棋子在第一行左数第二列的方格里居中 ox = boardx + SQUAREDIM + (SQUAREDIM - CHECKERDIM) / 2 + 1; oy = boardy + (SQUAREDIM - CHECKERDIM) / 2 + 1; // Attach a mouse listener to the applet That listener listens for // mouse-button press and mouse-button release events // 向applet添加一个用来监听鼠标按键的按下和释放事件的鼠标监听器 addMouseListener (new MouseAdapter () { public void mousePressed (MouseEvent e) { // Obtain mouse coordinates at time of press // 获取按键时的鼠标坐标 int x = egetX (); int y = egetY (); // If mouse is over draggable checker at time // of press (ie, contains (x, y) returns // true), save distance between current mouse // coordinates and draggable checker origin // (which will always be positive) and set drag // flag to true (to indicate drag in progress) // 在按键时如果鼠标位于可拖动的棋子上方 // (也就是contains (x, y)返回true),则保存当前 // 鼠标坐标与棋子的原点之间的距离(始终为正值)并且 // 将拖动标志设为true(用来表明正处在拖动过程中) if (contains (x, y)) { relx = x - ox; rely = y - oy; inDrag = true; } } boolean contains (int x, int y) { // Calculate center of draggable checker // 计算棋子的中心位置 int cox = ox + CHECKERDIM / 2; int coy = oy + CHECKERDIM / 2; // Return true if (x, y) locates with bounds // of draggable checker CHECKERDIM / 2 is the // radius // 如果(x, y)仍处于棋子范围内则返回true // CHECKERDIM / 2为半径 return (cox - x) (cox - x) + (coy - y) (coy - y) < CHECKERDIM / 2 CHECKERDIM / 2; } public void mouseReleased (MouseEvent e) { // When mouse is released, clear inDrag (to // indicate no drag in progress) if inDrag is // already set // 当鼠标按键被释放时,如果inDrag已经为true, // 则将其置为false(用来表明不在拖动过程中) if (inDrag) inDrag = false; } }); // Attach a mouse motion listener to the applet That listener listens // for mouse drag events //向applet添加一个用来监听鼠标拖动事件的鼠标运动监听器 addMouseMotionListener (new MouseMotionAdapter () { public void mouseDragged (MouseEvent e) { if (inDrag) { // Calculate draggable checker's new // origin (the upper-left corner of // the checker rectangle) // 计算棋子新的原点(棋子矩形的左上角) int tmpox = egetX () - relx; int tmpoy = egetY () - rely; // If the checker is not being moved // (at least partly) off board, // assign the previously calculated // origin (tmpox, tmpoy) as the // permanent origin (ox, oy), and // redraw the display area (with the // draggable checker at the new // coordinates) // 如果棋子(至少是棋子的一部分)没有被 // 移出棋盘,则将之前计算的原点 // (tmpox, tmpoy)赋值给永久性的原点(ox, oy), // 并且刷新显示区域(此时的棋子已经位于新坐标上) if (tmpox > boardx && tmpoy > boardy && tmpox + CHECKERDIM < boardx + BOARDDIM && tmpoy + CHECKERDIM < boardy + BOARDDIM) { ox = tmpox; oy = tmpoy; repaint (); } } } }); } public void paint (Graphics g) { // Paint the checkerboard over which the checker will be dragged // 在棋子将要被拖动的位置上绘制棋盘 paintCheckerBoard (imG, boardx, boardy); // Paint the checker that will be dragged // 绘制即将被拖动的棋子 paintChecker (imG, ox, oy); // Draw contents of image buffer // 绘制图像缓冲的内容 gdrawImage (imBuffer, 0, 0, this); } void paintChecker (Graphics g, int x, int y) { // Set checker shadow color // 设置棋子阴影的颜色 gsetColor (Colorblack); // Paint checker shadow // 绘制棋子的阴影 gfillOval (x, y, CHECKERDIM, CHECKERDIM); // Set checker color // 设置棋子颜色 gsetColor (Colorred); // Paint checker // 绘制棋子 gfillOval (x, y, CHECKERDIM - CHECKERDIM / 13, CHECKERDIM - CHECKERDIM / 13); } void paintCheckerBoard (Graphics g, int x, int y) { // Paint checkerboard outline // 绘制棋盘轮廓线 gsetColor (Colorblack); gdrawRect (x, y, 8 SQUAREDIM + 1, 8 SQUAREDIM + 1); // Paint checkerboard // 绘制棋盘 for (int row = 0; row < 8; row++) { gsetColor (((row & 1) != 0) darkGreen : Colorwhite); for (int col = 0; col < 8; col++) { gfillRect (x + 1 + col SQUAREDIM, y + 1 + row SQUAREDIM, SQUAREDIM, SQUAREDIM); gsetColor ((ggetColor () == darkGreen) Colorwhite : darkGreen); } } } // The AWT invokes the update() method in response to the repaint() method // calls that are made as a checker is dragged The default implementation // of this method, which is inherited from the Container class, clears the // applet's drawing area to the background color prior to calling paint() // This clearing followed by drawing causes flicker CheckerDrag overrides // update() to prevent the background from being cleared, which eliminates // the flicker // AWT调用了update()方法来响应拖动棋子时所调用的repaint()方法。该方法从 // Container类继承的默认实现会在调用paint()之前,将applet的绘图区域清除 // 为背景色,这种绘制之后的清除就导致了闪烁。CheckerDrag重写了update()来 // 防止背景被清除,从而消除了闪烁。 public void update (Graphics g) { paint (g); }}
前端输入一致。
前端输入路径一致,会导致所用的照片以及信息一致,为避免此类错误发生,可以在超链接路径时进行查看。
URLurl 等于MyImageIcon classgetResourceimageButton是用来超链接路径的。
连连看基本都是触屏游戏。
手机乐园有的,进入网站输入手机型号就可自动查找相应的软件或游戏。这个网站很正规,收费和免费写的很详细。支持电脑或手机免费下载,下载免费游戏,是完全免费的。网站内也有证书下载,有JAD生成器。游戏,软件等天天都有更新。另外《52小游戏网》这个手机游戏网也很不错的嘛。有纯触屏版块,有重力游戏版块。自己动手,其乐无穷。手机打字,手机发送,希望你急时采纳!!!
背景有两种方式,可用jlabel的构造函数具体看api,另外一个方法就是重写paintComponent()函数,给你个例子,
Toolkit tk = ToolkitgetDefaultToolkit();
private Image bground = tkcreateImage("D://workpalce//MarketManagement//src//images//bgd2gif");
protected void paintComponent(Graphics g) {
gdrawImage(bground, 0, 0, thisgetWidth(), thisgetHeight(), this);
}
Swing初体验 对于想学习Swing编程的朋友 我们特地为大家准备了一些小窍门 首先 下载并阅读代码是极有必要的 由于这是一篇关于Swing的教程 所以 我们只是尽可能讲解一些与Swing有关的内容 与Swing无关的内容一般不会涉及 例如算法部分 其次 受篇幅限制 也不可能在这里将每部分代码都写得完完整整的 所以 大家也需要对照完整代码来看 最后 为了使大家更容易把精力集中在Swing学习上 我们也将游戏开发中所需资源放在下载文件中 大家下载后便能够编译运行 看到执行结果 (下载游戏源文件) 顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候 图在哪里绘制呢?我们需要一个能够提供图形绘制的容器 这个容器就被称为顶层容器 你也可以把它想象成一个窗口 顶层容器是进行图形编程的基础 一切图形化的东西 都必然包括在顶层容器中 在Swing中 我们有三种可以使用的顶层容器 它们分别是:JFrame:用来设计类似于Windows系统中的窗口形式的应用程序 JDialog:和JFrame类似 只不过JDialog是用来设计对话框 JApplet:用来设计可以在嵌入在网页中的Java小程序 如果需要使用Swing制作一个窗口类程序 我们的代码看起来应该是这样:import javax swing ;public class KyodaiUIextends JFrame {……} 控件 控件是构成应用程序界面的基本元素 按钮 文本框 进度条等 这些都是控件 控件(这里我们只讨论可视化控件)又可以分为容器控件和非容器控件 从字面意义上来理解 容器控件就是能包含其他控件的特殊控件 例如 Java中的JPanel控件就属于容器型控件 我们可以在JPanel中放置按钮 文本框等非容器控件 你甚至可以在JPanel中再放置若干个JPanel控件(值得注意的是 顶层容器也是容器型控件 每一个窗口应用程序中有且只能有一个顶层容器控件 换句话说 顶层容器不能包括在其他的控件中) Java中的容器控件有很多 除刚才提到的JPanel外 还有JTabbedPane JScrollPane等 非容器控件有JButton JLabel JTextField等 如果你需要向某个容器型的控件中添加控件 你可以使用 add(Component p) 方法来实现 如:JPanel panel = new JPanel();JButton button = new JButton();panel add(button); 布局 什么是布局?布局是Java中用来控制控件排列位置的一种界面管理系统 使用过其他可视化编程开发语言的人在初次接触Java界面设计时 总会感觉到Java界面设计很别扭:居然没有提供所见即所得的设置控件坐标的方法!然而 事实证明 Java本身提供的布局管理系统也一样能够出色地完成我们的需要 而且在跨平台时表现得更有优势 常用的布局有:BorderLayout:将界面分割为上下左右以及中间一块区域的管理系统 在BorderLayout布局中 最多你只能放 个控件 如果超过 个控件 建议还是选用其他的布局系统吧 GridLayout:GridLayout是将用户界面切割为棋盘一样的布局管理系统 如果我们要设计一个类似于Windows中自带的计算器软件 GridLayout无疑是最佳选择 FlowLayout:FlowLayout与上述两类布局管理系统不太一样 在FlowLayout中 你不必指定每个控件放在哪 你只需要把控件加入到FlowLayout中 FlowLayout就会根据你添加控件的顺序依次放置控件 如果空间不够 会自动换行 在对这几个布局管理系统有了基本认识后 我们就一起来进入界面设计吧 在仔细观察了QQ游戏中 连连看 的设定后 我们可以发现 整个界面分为三个区 顶部是系统菜单区 占地面积最大的是用户游戏区 另外还有一个用户交互区 每个区域中都由若干控件组成 这么多控件 我们从哪开始入手呢?由于容器控件中可以放置其他控件 因此 我们只需要先确定放置的容器控件就可以了 既然已经知道需要使用容器控件的个数 接下来让我们就进入布局管理系统的选择 用GridLayout?似乎有点勉强 用FlowLayout?还有更好的选择吗?对了 我想你一定想到了是BorderLayout吧 如下图 所示 动手之前 大家一定要注意的是 界面的设计要先考虑好尺寸 不管是主程序界面的大小还是每个区域的大小 如果没有设计好合适的尺寸 将来改动起来会十分痛苦 下面便是相应的源程序:import java awt ;import javax swing ;public class KyodaiUI extends JFrame {public KyodaiUI() {this setSize( ); //将窗体的大小设定为 this setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);this setResizable(false); //窗体不能改变大小this setTitle( 连连看 ); //设置标题JPanel toolBar = new JPanel();toolBar setBackground(Color white);toolBar setPreferredSize(new Dimension( ));JPanel actionPanel = new JPanel(); //新建JPanel型的控件actionPanel setBackground(Color yellow); //设置背景色actionPanel setPreferredSize(new Dimension( )); //设置大小JPanel contentPanel = new JPanel();contentPanel setBackground(Color blue);contentPanel setPreferredSize(new Dimension( ));this getContentPane() add(toolBar BorderLayout NORTH);this getContentPane() add(actionPanel BorderLayout EAST);this getContentPane() add(contentPanel BorderLayout CENTER);}public static void main(String[] args) throws HeadlessException {KyodaiUI kyodaiUI = new KyodaiUI();kyodaiUI show();}}让我们来看看上面这段程序是如何运行的 首先 extends JFrame表明了这是从JFrame中继承过来的 JFrame是最基本的顶层容器控件 实际上 在JDK中 以字母J打头的控件都是Swing控件 然后设置了容器的属性 其中 setDefaultCloseOperation(JFrame EXIT_ON_CLOSE)是用来告诉Java虚拟机 当用户点击窗体右上角的 关闭 按钮时 关闭该窗口进程 如果不这么做的话 你会发现虽然你可以点将窗口关闭 然而程序却没有退出 在接下来的代码中 我们为顶层容器添加了三个Panel容器 要注意的是 在AWT中 我们可以直接写为add(toolBar BorderLayout NORTH) 而在 Swing 中却一定要写成getContentPane() add(toolBar BorderLayout NORTH) 否则程序就会出错 现在大家可以放在编译运行看看 是不是和我的运行结果一样(见图 )? 边框 虽然我们使用了不同前景色来区别不同的区域 然而却没有层次感 加上边框一定会漂亮许多 在Java中 所有以J打头的Swing控件都可以使用setBorder方法来为自己设置边框 边框有很多种 线型 凸起 凹下 空的 你甚至可以自由组合形成个人风格 所有的Border都必须使用javax swing BorderFactory中提供的静态方法来创建 比如:Border border = BorderFactory createBevelBorder(BevelBorder LOWERED new Color( ) new Color( ) new Color( ) new Color( ));现在 我们将toolBar setBackground(Color white)改为toolBar setBorder(border) 立体效果是不是已经出现了?实战写上自己的大名现在我们已经有了一个能够运行的界面了 虽然它什么也做不了 但是请你别慌 罗马不是一天建成的 现在让我们在菜单区提供一个 关于 菜单 用来显示程序的信息 难道你不想让别人知道你的大名吗?Swing本身就提供了现成的按钮控件JButton 我们只需要创建一个新的按钮:JButton about = new JButton( 关于 );这个按钮该怎么放到菜单区而不是别的地方呢?我们可以加入下面的代码:toolBar add(about);咦 怎么点按钮没有反应?这是因为你还没有告诉程序点击按钮时要做什么事情呢 要为按钮添加事件响应 首先需要使用about addActionListener(this)来告诉程序监听按钮按下时的事件 由于ActionListener是一个程序接口 因此 我们在类的申明的地方也得做一点小小的修改:public class KyodaiUI extends JFrame implements ActionListener { }实现ActionListener接口是为了告诉程序我要进行事件处理了 当然 最后我们得添加响应事件的代码:public void actionPerformed(ActionEvent e) {if (e getSource() == about) {JOptionPane showMessageDialog(this 我的大名 关于 JOptionPane INFORMATION_MESSAGE);return ;}}其中 e getSource() 表示当前触发事件的控件 由于我们的程序中往往会有多个以上的控件 这些控件都有可能产生事件 所以我们必须使用这个方法来找到产生事情的控件 小结 让我们一起来回顾一下今天所学的内容:首先我们了解了顶层容器 也知道了控件分为容器控件和非容器控件 同时还知道使用边框 最后 我们还小小的处理了一下按钮的事件 学而时习之 不亦说乎 就让我留点小小的作业 帮助大家巩固一下今天所学的内容:上面我们添加的按钮在菜单栏的中间 并不美观 lishixinzhi/Article/program/Java/hx/201311/25907
以上就是关于求java小游戏源代码全部的内容,包括:求java小游戏源代码、java连连看运行出来图片怎么一模一样、有没有JAVA触屏手机可以用的“水果连连看”游戏啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)