在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<TABLE_X+100) {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,高500f.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 blocke1.printStackTrace();}System.exit(0);}});f.addKeyListener(keyProcessor);                                             //添加键盘监听器draw.addKeyListener(keyProcessor);//画布长500,高500draw.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 blocke1.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实战:一个桌球小游戏相关推荐

  1. Cocos Creator入门实战:桌球小游戏

    Cocos Creator入门实战:桌球小游戏 转载请保留原文链接:https://blog.csdn.net/zzx023/article/details/90035153 本篇主要是希望能够通过C ...

  2. Cocos Creator游戏引擎可以支持鼠标吗_Cocos Creator入门实战:桌球小游戏

    本文作者:BigBear 多年游戏行业研发经验 精通Unreal.CocosCreator游戏引擎 参与过多款手游.端游项目的研发 Cocos Creator入门实战:桌球小游戏 本篇主要是希望能够通 ...

  3. ​Cocos Creator入门实战:桌球小游戏

    本文作者:BigBear 多年游戏行业研发经验 精通Unreal.CocosCreator游戏引擎 参与过多款手游.端游项目的研发 Cocos Creator入门实战:桌球小游戏 本篇主要是希望能够通 ...

  4. java台球游戏设计原理_java实现一个桌球小游戏

    本文实例为大家分享了java实现桌球小游戏的具体代码,供大家参考,具体内容如下 在ecplise中新建一个JAVA项目 建立四个class分别对应游戏登陆界面,游戏界面,数据库操作,和一个开始类 代码 ...

  5. 基于java制作一个飞机小游戏(学习心得)

    emmm,第一篇博客 用了这么久的csdn,都是在观摩大佬们发帖,一只小萌新瑟瑟发抖,不敢说话,甚 至连代码也不能完全读懂.假期在b站自学(可以说是复习)了java课程,尚学堂的 2018版.链接如下 ...

  6. 用Java写一个五子棋小游戏

    棋盘是15*15(可以自己规定) 游戏规则: (1)对局双方各执一色棋子. (2)空棋盘开局. (3)黑先.白后,交替下子,每次只能下一子. (4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动 ...

  7. 实现石头剪刀布获胜法_用java实现一个猜拳小游戏

    本文实例为大家分享了java实现猜拳小游戏的具体代码,供大家参考,具体内容如下 项目名称 猜拳小游戏 项目描述 玩家与电脑进行猜拳游戏,玩家行为采用输入方式,电脑行为采用随机形式. 实现: User类 ...

  8. java做一个打地鼠小游戏

    想起了了大学那会做过这个小游戏,今天重新写一下 首先准备几个素材图片,搜了半天没有,只好自己找了个图片截了一下(如果侵权了联系我删除). JFrame画一个主页面,设置了全局的行.列和总数,循环添加所 ...

  9. java的一个简单小游戏

    台球小游戏: 所用图片如下: 代码: package com.bjsxt; import java.awt.*;import javax.imageio.stream.FileImageInputSt ...

  10. 用JAVA写一个趣味小游戏

    趣味猜数小游戏代码如下: public class task08 {public static void main(String[] args) {//声明部分int x,target;Scanner ...

最新文章

  1. pip删除依赖、配置虚拟环境
  2. HEOI2018游记
  3. c# 之 URL资源访问
  4. webpack配置vue组件加载器
  5. 如何在Mac OS X上启动PostgreSQL服务器?
  6. 丑憨批的爬虫笔记5信息标记与提取
  7. Wormholes--POJ 3259
  8. 如何判断两个时间段是否有交集
  9. MSP, CMP傻傻分不清楚?一文读懂云管理的春天
  10. Spring boot的Maven配置依赖
  11. 在iOS项目中,这样才能完美的修改项目名称
  12. 5.3Python数据处理篇之Sympy系列(三)---简化操作
  13. 15/7/2017 暑期第一次集训小总结
  14. Ext.widgets-menu
  15. 前公司未支付竞业限制补偿金,如何起诉?
  16. Django 前戏
  17. 股票涨跌的心理学原理: 遗憾理论
  18. 安全测试(四) Wi-Fi安全 渗透测试 网络安全 公共场的免费Wi-Fi真的安全吗?个人信息被监控窃听风险 如: ARP攻击 SSL攻击 DNS安全 加密方式等 枚举实战应用案例 信息窃听获取
  19. (详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别
  20. delbug 云端BUG管理平台

热门文章

  1. 京东科技埋点数据治理和平台建设实践
  2. 德州仪器启用深圳全新自动化产品分拨中心;SGS宣布与微软、中兴通讯等公司合作;阿维塔科技完成首轮战略融资 | 全球TMT...
  3. 中文搜索引擎技术揭密:系统架构(三)
  4. 第一次前端培训(HTML基础)
  5. 阿里开源android脚手架,GitHub - HiJesse/Gaea: Android 脚手架(组件化, 插件化)
  6. 基于JSP网上机票销售系统的设计与实现
  7. [Linux 基础] 嵌入式 Linux ---- uevent 机制:uevent 原理分析(深度好文)
  8. 医院网站建设改版:医院站群系统模块有哪些?
  9. LabVIEW用户界面设计
  10. tensorflow 搭建简单的卷积神经网络,输入二维数组完成分类