桌球java_java实现一个桌球小游戏
本文实例为大家分享了java实现桌球小游戏的具体代码,供大家参考,具体内容如下
在ecplise中新建一个JAVA项目
建立四个class分别对应游戏登陆界面,游戏界面,数据库操作,和一个开始类
代码如下
游戏类:
package 弹球游戏;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JTextPane;
import javax.swing.Timer;
/*----------------游戏界面,弹球游戏------------------*/
public class Game {
private final int FRAME_X =500;
private final int FRAME_Y =450;
private final int FRAME_WIDTH =500;
private final int FRAME_HIGH =500;
private final int TABLE_WIDTH = 100; //板子宽度
private final int TABLE_HIGH =20 ; //板子高度
private final int BALL_SIZE =20; //球的大小
Random rand = new Random();
private int TABLE_X=rand.nextInt(200); //板子的坐标
private int TABLE_Y=400;
private int BALL_X=10; //小球的横坐标
private int BALL_Y=10; //小球的纵坐标
private int SPEED = 10; //小球横向速度
Frame f = new Frame("弹球游戏");
private Mycanvas draw = new Mycanvas();
private boolean is_X = true; //为true的时候横坐标+
private boolean is_Y = true; //为true的时候纵坐标+
private int score =0; //游戏的得分
private Panel p = new Panel();
private JTextPane tex = new JTextPane(); //排行榜显示
//定义键盘监听器
KeyAdapter keyProcessor = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_LEFT&&TABLE_X>0) {
TABLE_X -=10;
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT&&TABLE_X<370){
TABLE_X +=10;
}
if(e.getKeyCode()==KeyEvent.VK_UP&&TABLE_Y>0) {
TABLE_Y -=10;
}
if(e.getKeyCode()==KeyEvent.VK_DOWN&&TABLE_Y<430) {
TABLE_Y +=10;
}
}
};
//定义事件监听器
ActionListener task = new ActionListener (){
public void actionPerformed(ActionEvent e) {
if(BALL_X>FRAME_X||BALL_Y>FRAME_Y&&BALL_Y>TABLE_Y-15) {
try {
DataBaseLoding d = new DataBaseLoding();
d.initParam("mysql.ini");
d.insertScore(score);
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println("结束了");
timer.stop();
}
if(is_X) {
BALL_X +=10;
}else {
BALL_X -=10;
}
if(BALL_X>440){
is_X=false;
}
if(BALL_X<10) {
is_X=true;
}
if(BALL_Y<0) {
is_Y =true;
}
if(is_Y) {
BALL_Y+=10;
}else {
BALL_Y-=10;
}
if(BALL_Y==TABLE_Y-10&&BALL_X>TABLE_X&&BALL_X
is_Y=false;
}
score++;
draw.repaint();
}
};
Timer timer = new Timer(100,task);
public void text() {
Font f = new Font("排行榜的字体",Font.ITALIC,25);
tex.setFont(f);
String first ="名次"+"\t"+"\t"+"分数"+"\r";
try {
DataBaseLoding d = new DataBaseLoding();
d.initParam("mysql.ini");
first +=d.select();
} catch (Exception e1) {
e1.printStackTrace();
}
tex.setText(first);
p.add(tex);
}
public void init() {
f.add(draw);
text();
f.add(p, BorderLayout.EAST);
//长800,高500
f.setBounds(FRAME_X, FRAME_Y, FRAME_WIDTH+350, FRAME_HIGH);
//关闭窗口
f.addWindowListener(new WindowAdapter() { //添加窗口监听器
public void windowClosing(WindowEvent e) {
try {
DataBaseLoding d = new DataBaseLoding();
d.initParam("mysql.ini");
d.insertScore(score);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.exit(0);
}
});
f.addKeyListener(keyProcessor); //添加键盘监听器
draw.addKeyListener(keyProcessor);
//画布长500,高500
draw.setPreferredSize(new Dimension(FRAME_WIDTH,FRAME_HIGH));
timer.start();
f.setVisible(true);
}
class Mycanvas extends Canvas{
public void paint(Graphics g) {
g.setColor(new Color(0, 0, 0));
g.drawLine(0, FRAME_Y, FRAME_X-20, FRAME_Y);
g.drawLine(FRAME_X-25, 0, FRAME_X-25, FRAME_Y);
g.drawLine(0, 0, 0, FRAME_Y);
g.setColor(new Color(0,0,0));
g.fillRect(TABLE_X,TABLE_Y , TABLE_WIDTH, TABLE_HIGH);
g.setColor(new Color(255,175,175));
g.fillRect(BALL_X, BALL_Y, BALL_SIZE, BALL_SIZE);
Font font = new Font("分数",10,20);
g.setFont(font);
g.drawString("分数:"+score, 380, 20);
}
}
}
登陆类:输入一个名字,成功后就直接开始游戏
package 弹球游戏;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/*-----------------登陆界面,输入名字--------------------*/
public class Langding {
private final int FRAME_X =500;
private final int FRAME_Y =450;
private final int FRAME_WIDTH =500;
private final int FRAME_HIGH =500;
private JFrame f;
private JButton ok;
private JPanel p;
private TextField name;
private TextField pass;
private Game g;
private int score=0;
/*-------------暂时还没用到这个*/
//private String PASS_WORD ="";
private String NAME_WORD ="";
public void init() throws Exception {
f = new JFrame("登陆窗口");
p = new JPanel() {
protected void paintComponent(Graphics g) {
ImageIcon icon = new ImageIcon("lib/01.png");
Image img = icon.getImage();
Image img1 = img.getScaledInstance(FRAME_WIDTH+300, FRAME_HIGH,Image.SCALE_DEFAULT);
icon.setImage(img1);
g.drawImage(img, 0, 0, icon.getIconWidth(),
icon.getIconHeight(), icon.getImageObserver());
}
};
f.add(p);
ok = new JButton("登陆");
name = new TextField(20);
//pass = new TextField(20);
p.add(name);
//p.add(pass);
ok.setPreferredSize(new Dimension(100, 100));
p.add(ok);
//点击按钮的事件
Action go = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
DataBaseLoding d = new DataBaseLoding();
try {
//获得输入的名字
NAME_WORD = name.getText();
//将名字导入到数据库
d.initParam("mysql.ini");
d.insertName(NAME_WORD);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("玩家名字是"+name.getText());
//游戏开始
g = new Game();
g.init();
}
};
ok.addActionListener(go);
f.setBounds(FRAME_X, FRAME_Y, FRAME_WIDTH+300, FRAME_HIGH);
f.add(p);
f.setVisible(true);
}
public static void main(String[] args) throws Exception {
Langding l = new Langding();
l.init();
}
}
数据库操作类:包含两个方法,插入名字和修改分数,用的数据库分数默认是-1
package 弹球游戏;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
/*------------------------ 数据库的连接和插入名字,修改分数的方法--------------------------------------*/
public class DataBaseLoding {
private String driver;
private String url;
private String user;
private String pass;
//登陆数据库
public void initParam(String paramFile) throws Exception {
Properties props = new Properties();
props.load(new FileInputStream(paramFile));
driver = props.getProperty("driver");
url = props.getProperty("url");
user = props.getProperty("user");
pass = props.getProperty("pass");
}
//将名字插入到数据库中
public int insertName(String Name) throws Exception {
Class.forName(driver);
String sql ="insert into 弹球游戏(name) values("+"'"+Name+"'"+")"+";";
try (
Connection conn =DriverManager.getConnection(url,user,pass);
Statement stmt =conn.createStatement();
)
{
System.out.println(Name);
return stmt.executeUpdate(sql);
}
}
//把score插到主键为name的那一行
public int insertScore(int Score) throws Exception {
Class.forName(driver);
String sql ="update 弹球游戏 set score ="+Score
+" where score = -1"+";";
try (
Connection conn =DriverManager.getConnection(url,user,pass);
Statement stmt =conn.createStatement();
)
{
System.out.println(Score);
return stmt.executeUpdate(sql);
}
}
public String select() throws Exception{
Class.forName(driver);
String sql ="select * from 弹球游戏 ORDER BY score DESC ;";
String result ="";
try (
Connection conn =DriverManager.getConnection(url,user,pass);
Statement stmt =conn.createStatement();
ResultSet rs =stmt.executeQuery(sql);
)
{
int i=1;
while(rs.next()) {
result +="第"+i+"名"+ rs.getString(1)+"\t"+"\t"+rs.getInt(2)+"\r";
i++;
if(i==11) {
break;
}
}
return result;
}
}
}
主类:
package 弹球游戏;
public class Begain {
public static void main(String[] args) throws Exception {
Langding l = new Langding();
l.init()package 弹球游戏;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持谷谷点程序。
桌球java_java实现一个桌球小游戏相关推荐
- python经典小游戏-用Python设计一个经典小游戏:猜大小
码农那点事儿 关注我们,一起学习进步 本文主要介绍如何用Python设计一个经典小游戏:猜大小. 游戏规则: 初始本金是1000元,默认赔率是1倍,赢了,获得一倍金额,输了,扣除1倍金额. 玩家选择下 ...
- 20行python代码的入门级小游戏-用Python设计一个经典小游戏
本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...
- python经典小游戏-用Python设计一个经典小游戏
本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...
- 原生js实现一个连连看小游戏(一)
前几天使用原生的js写了一个连连看小游戏,地址:连连看(js),基本功能都实现了,运行截图为: 根据游戏规则获取开发思路 创建棋盘格 生成随机不重复数字 映射到棋盘格 鼠标点击事件 寻路,无通路,则到 ...
- 《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧
本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将 ...
- python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!
导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...
- 如何开发一个扫雷小游戏?
如何用C#开发一个扫雷小游戏? 十分自豪的说,计算机编程就是变魔术,每一个coder都是一个魔术师. 初学C#的时候,我相信很多人都和我一样,学会了基本语法,掌握了基本的数据结构,也见过了不少微软提供 ...
- python大作业数独_python做一个数独小游戏
最近看了下python的一些知识,在这里记载一下. 1.首先是安装,在官网下载最新的版本3.6,安装的时候要注意在下面勾选上ADD TO PATH,安装的时候会自动写入到环境变量里面,如果没有勾选,可 ...
- 大家都在发圣诞树,我偏偏要发一个圣诞小游戏给大家玩【内附源码】
大家好,我是辣条. 前言 圣诞节快来了,热榜都被一堆圣诞树攻占了,这样的流量密码我怎么会错过,大家都发圣诞树,我就不发啦,直接分享一个圣诞小游戏给大家玩,代码太长一定要先赞和收藏. 领取福利 300 ...
- #Java教程:集合 #Collection、List、Set #ArrayList、LinkedList、Vector、HashSet、TreeSet #一个斗地主小游戏@FDDLC
一.概述 Java单列集合中最顶层的是Collection接口,Collection下又分List和Set两大类: 学习Java集合的时候,建议自顶向下学:先学Collection,再学List和Se ...
最新文章
- android设置tls版本,Android O移除HttpsURLConnection中不安全的TLS版本回退
- Ubuntu 12.04搭建Ruby on Rails开发环境
- oracle json 搜索,oracle 正则查询json返回报文中某个字段的值
- P3391 【模板】文艺平衡树(Splay)
- map怎么转化dto_java实现Object和Map之间的转换3种方式
- 深入浅出Win32多线程程序设计之线程通信
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts
- 区块链,到底是美好未来还是题材炒作?
- MKNetWorkKit(转载)
- 技术篇-符号制作-线符号制作
- Android自动调整TextView的大小
- 在浏览器中简单输入一个网址,解密其后发生的一切(http请求的详细过程)
- harmonyos2.0手机,华为HarmonyOS 2.0将于6月2日发布,华为手机可一键升级
- 探索的动机: 爱因斯坦于1918年4月的讲话
- 迷途emlog模板全站好看的变色模板源码
- (usb转串口)CH340驱动安装失败的解决方案
- 【es】elasticsearch生产数据备份和恢复方案
- 有理样条曲线学习笔记(一)
- I aced it!我做得很好
- 二维平面最短距离(分治)