Java桌球小游戏1
版本三、使小球动起来
package cn.xjion.game;
/**
* 水平滚动
* @author xjion
*
*/
import java.awt.*;
import javax.swing.*;
//继承窗口类
public class BallGame extends JFrame{
// 创建两个图片的对象,代表两个图片
Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
int x = 100;
int y = 100;
boolean right = true;
// 画窗口的方法
public void paint(Graphics g){
// 画桌面
g.drawImage(desk, 0, 0, null);
// 画ball对象,坐标100,100
g.drawImage(ball, x, y, null);
// 如果向右走就加10,否则减10
if (right) {
x = x + 10;
}else{
x = x - 10;
}
// 当球跑到头了就返回
if(x>856-40-30){
right = false;
}
if(x<40){
right = true;
}
}
// 窗口加载的方法
void launchFrame(){
// 窗口的大小,宽高
setSize(856,500);
// 窗口的位置,距离窗口左上角的位置
setLocation(50,50);
// 窗口可见
setVisible(true);
// 重画窗口,无限重画
while(true){
// 重画方法
repaint();
// try catch抛异常
try {
// 40ms重画一次,1秒25次
Thread.sleep(40);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// main方法,执行入口
public static void main(String[] args) {
// 新建对象
BallGame bg = new BallGame();
// 调用方法
bg.launchFrame();
}
}
版本四、使小球沿任意角度滚动
package cn.xjion.game;
/**
* 任意滚动
* @author xjion
*
*/
import java.awt.*;
import javax.swing.*;
//继承窗口类
public class BallGame2 extends JFrame{
// 创建两个图片的对象,代表两个图片
Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
// 在窗口上的坐标
double x = 100;
double y = 100;
double degree = 3.14 / 3;//弧度,60°
// 画窗口的方法
public void paint(Graphics g){
// 画桌面
g.drawImage(desk, 0, 0, null);
// 画ball对象,坐标100,100
g.drawImage(ball,(int) x,(int) y, null);
// x和y坐标的变化
x = x + 10*Math.cos(degree);
y = y + 10*Math.sin(degree);
/*判断什么时候碰到边界回弹*/
// 碰到上下边界回弹
if (y>500-40-30 || y<40 + 40) {
degree = -degree;
}
// 碰到左右边界回弹
if (x>856-40-30 || x<30) {
degree = 3.14-degree;
}
}
// 窗口加载的方法
void launchFrame(){
// 窗口的大小,宽高
setSize(856,500);
// 窗口的位置,距离窗口左上角的位置
setLocation(50,50);
// 窗口可见
setVisible(true);
// 重画窗口,无限重画
while(true){
// 重画方法
repaint();
// try catch抛异常
try {
// 40ms重画一次,1秒25次
Thread.sleep(40);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// main方法,执行入口
public static void main(String[] args) {
// 新建对象
BallGame2 bg = new BallGame2();
// 调用方法
bg.launchFrame();
}
}
---------------------
Java桌球小游戏1的更多相关文章
- Java桌球小游戏(兴趣制作)
两张图片放在src的同级目录下 版本一.出现窗口package cn.xjion.game;/** * 出现窗口 * @author xjion * */import java.awt.*;impor ...
- Java桌球小游戏
版本一.出现窗口package cn.xjion.game;/** * 出现窗口 * @author xjion * */import java.awt.*;import javax.swing.*; ...
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
- Java五子棋小游戏(控制台纯Ai算法)
Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...
- Java猜拳小游戏(剪刀、石头、布)
1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...
- 从零开始学java(小游戏 石头剪刀布)
Game.java package com.java;import java.util.Scanner;public class Game { private Player player ...
- Java石头剪刀布小游戏
package com.neusoft.test; import java.awt.BorderLayout; import java.awt.Choice; import java.awt.Colo ...
- Java开发小游戏 用键盘控制精灵在游戏中上下左右跑动 窗体小游戏可打包下载,解压后双击start运行
package com.swift; import java.awt.Point; import java.awt.event.KeyEvent; import com.rupeng.game.Gam ...
- Java经典小游戏——贪吃蛇简单实现(附源码)
一.使用知识 Jframe GUI 双向链表 线程 二.使用工具 IntelliJ IDEA jdk 1.8 三.开发过程 3.1素材准备 首先在开发之前应该准备一些素材,已备用,我主要找了一个图片以 ...
随机推荐
- Github上的SlidingMenu菜单的使用方法
GitHub上的SlidingMenu的配置方法 1. 首先明确SlidingMenu是什么? 2. 如何使用SlidingMenu框架呢? GitHub上的SlidingMenu的配置方法 1. 首 ...
- TP5.0 where数组高级查询
多条件模糊查询多条件比较查询使用数组可以方便得将一些比较复杂的查询条件 , 组合到一个数组之内 如以下数据库查询 $subjectList = Db::name('user_apply') -> ...
- python find()函数
实例(Python 2.0+) str1 = "this is string example....wow!!!"; str2 = "exam"; print ...
- 监听器、拦截器完成对session、cookie的会话控制
package com.trsmedia.interceptor; import java.util.Date; import java.util.Timer; import java.util.Ti ...
- ajax请求在参数中添加时间戳
ajax请求在参数中添加时间戳 参考网址
- 发送验证码倒计时60s
var wait=60; function time(o) { if (wait == 0) { o.removeClass("gray"); o.text("发送验证码 ...
- IO Processing
Types of IO IRP Buffer Management 首先区分一下page的内存与nonpaged的内存,内存如果用页管理,就难免面对被swap out的命运:但是如果用nonpaged ...
- Leetcode代码复盘_动态规划
动态规划中包含3个重要的概念: 1.最优子结构 2.边界 3.状态转移公式 以跳台阶为例,最优子结构为f(10)=f(9) + f(8),边界是f(1)=1, f(2)=2,状态转移公式f(n)=f( ...
- Django框架(十八)—— CBV源码分析、restful规范、restframework框架
目录 CBV源码分析.restful规范.restframework框架 一.CBV源码分析 1.url层的使用CBV 2.as_view方法 3.view方法 4.dispatch方法(可以在视图层 ...
- Eureka 系列(07)服务注册与主动下线
Eureka 系列(07)服务注册与主动下线 [TOC] Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(05)消息广播 中对 Eureka 消息广播的源码进行 ...