本文实例为大家分享了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实现一个桌球小游戏相关推荐

  1. python经典小游戏-用Python设计一个经典小游戏:猜大小

    码农那点事儿 关注我们,一起学习进步 本文主要介绍如何用Python设计一个经典小游戏:猜大小. 游戏规则: 初始本金是1000元,默认赔率是1倍,赢了,获得一倍金额,输了,扣除1倍金额. 玩家选择下 ...

  2. 20行python代码的入门级小游戏-用Python设计一个经典小游戏

    本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...

  3. python经典小游戏-用Python设计一个经典小游戏

    本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...

  4. 原生js实现一个连连看小游戏(一)

    前几天使用原生的js写了一个连连看小游戏,地址:连连看(js),基本功能都实现了,运行截图为: 根据游戏规则获取开发思路 创建棋盘格 生成随机不重复数字 映射到棋盘格 鼠标点击事件 寻路,无通路,则到 ...

  5. 《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧

    本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将 ...

  6. python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!

    导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...

  7. 如何开发一个扫雷小游戏?

    如何用C#开发一个扫雷小游戏? 十分自豪的说,计算机编程就是变魔术,每一个coder都是一个魔术师. 初学C#的时候,我相信很多人都和我一样,学会了基本语法,掌握了基本的数据结构,也见过了不少微软提供 ...

  8. python大作业数独_python做一个数独小游戏

    最近看了下python的一些知识,在这里记载一下. 1.首先是安装,在官网下载最新的版本3.6,安装的时候要注意在下面勾选上ADD TO PATH,安装的时候会自动写入到环境变量里面,如果没有勾选,可 ...

  9. 大家都在发圣诞树,我偏偏要发一个圣诞小游戏给大家玩【内附源码】

    ​大家好,我是辣条. 前言 圣诞节快来了,热榜都被一堆圣诞树攻占了,这样的流量密码我怎么会错过,大家都发圣诞树,我就不发啦,直接分享一个圣诞小游戏给大家玩,代码太长一定要先赞和收藏. 领取福利 300 ...

  10. #Java教程:集合 #Collection、List、Set #ArrayList、LinkedList、Vector、HashSet、TreeSet #一个斗地主小游戏@FDDLC

    一.概述 Java单列集合中最顶层的是Collection接口,Collection下又分List和Set两大类: 学习Java集合的时候,建议自顶向下学:先学Collection,再学List和Se ...

最新文章

  1. android设置tls版本,Android O移除HttpsURLConnection中不安全的TLS版本回退
  2. Ubuntu 12.04搭建Ruby on Rails开发环境
  3. oracle json 搜索,oracle 正则查询json返回报文中某个字段的值
  4. P3391 【模板】文艺平衡树(Splay)
  5. map怎么转化dto_java实现Object和Map之间的转换3种方式
  6. 深入浅出Win32多线程程序设计之线程通信
  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts
  8. 区块链,到底是美好未来还是题材炒作?
  9. MKNetWorkKit(转载)
  10. 技术篇-符号制作-线符号制作
  11. Android自动调整TextView的大小
  12. 在浏览器中简单输入一个网址,解密其后发生的一切(http请求的详细过程)
  13. harmonyos2.0手机,华为HarmonyOS 2.0将于6月2日发布,华为手机可一键升级
  14. 探索的动机: 爱因斯坦于1918年4月的讲话
  15. 迷途emlog模板全站好看的变色模板源码
  16. (usb转串口)CH340驱动安装失败的解决方案
  17. 【es】elasticsearch生产数据备份和恢复方案
  18. 有理样条曲线学习笔记(一)
  19. I aced it!我做得很好
  20. 二维平面最短距离(分治)

热门文章

  1. 某运输管理系统(TMS)概述
  2. HTTP协议详解(一)
  3. Speedtest在线测试html,配置HTML5 Speedtest测试本地与服务器之间的速度
  4. ibm tivoli_带有Tivoli Access Manager的SAP NetWeaver Application Server ABAP的单点登录
  5. ios开发愤怒的小鸟的Lua语言:Wax框架详解
  6. Bootloader的启动
  7. Linux root密码暴力破解及重置的三种方式
  8. 仿进入GameCenter的五个气球效果
  9. base64解密方法
  10. C语言程序找零问题怎么运行,C语言找零问题