最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)一個桌球小游戲

 更新時間:2019年07月13日 11:11:58   作者:ruanwenjun_csdn  
這篇文章主要為大家詳細介紹了java實現(xiàn)一個桌球小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)桌球小游戲的具體代碼,供大家參考,具體內容如下

在ecplise中新建一個JAVA項目

建立四個class分別對應游戲登陸界面,游戲界面,數(shù)據(jù)庫操作,和一個開始類

代碼如下

游戲類:

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(); //排行榜顯示
 //定義鍵盤監(jiān)聽器
 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;
  }
 }
 };
 //定義事件監(jiān)聽器

 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"+"分數(shù)"+"\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() {     //添加窗口監(jiān)聽器
  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);      //添加鍵盤監(jiān)聽器
 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("分數(shù)",10,20);
  g.setFont(font);
  g.drawString("分數(shù):"+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();
   //將名字導入到數(shù)據(jù)庫
   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();
 }
}

數(shù)據(jù)庫操作類:包含兩個方法,插入名字和修改分數(shù),用的數(shù)據(jù)庫分數(shù)默認是-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;


/*------------------------ 數(shù)據(jù)庫的連接和插入名字,修改分數(shù)的方法--------------------------------------*/
public class DataBaseLoding {
 private String driver;
 private String url;
 private String user;
 private String pass;
 //登陸數(shù)據(jù)庫
 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");
 }
 //將名字插入到數(shù)據(jù)庫中
 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計算交集,差集,并集的方法示例

    這篇文章主要介紹了Java計算交集,差集,并集的方法,結合實例形式簡單分析了java集合運算的簡單操作技巧,需要的朋友可以參考下
    2017-10-10
  • jenkins和sonar實現(xiàn)代碼檢測過程詳解

    jenkins和sonar實現(xiàn)代碼檢測過程詳解

    這篇文章主要介紹了jenkins和sonar實現(xiàn)代碼檢測過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Spring JPA聯(lián)表查詢之OneToMany源碼解析

    Spring JPA聯(lián)表查詢之OneToMany源碼解析

    這篇文章主要為大家介紹了Spring JPA聯(lián)表查詢之OneToMany源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • JAVA格式化時間日期的簡單實例

    JAVA格式化時間日期的簡單實例

    這篇文章主要介紹了JAVA格式化時間日期的簡單實例,有需要的朋友可以參考一下
    2013-11-11
  • MybatisPlus之likeRight的用法

    MybatisPlus之likeRight的用法

    這篇文章主要介紹了MybatisPlus之likeRight的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java進階學習之如何開啟遠程調式

    Java進階學習之如何開啟遠程調式

    Java開發(fā)中的遠程調試是一項至關重要的技能,特別是在處理生產(chǎn)環(huán)境的問題或者協(xié)作開發(fā)時,這篇文章主要介紹了Java進階學習之如何開啟遠程調式的相關資料,需要的朋友可以參考下
    2025-03-03
  • 解決	Spring RestTemplate post傳遞參數(shù)時報錯問題

    解決 Spring RestTemplate post傳遞參數(shù)時報錯問題

    本文詳解說明了RestTemplate post傳遞參數(shù)時報錯的問題及其原由,需要的朋友可以參考下
    2020-02-02
  • JavaWeb?Hibernate使用全面介紹

    JavaWeb?Hibernate使用全面介紹

    在正式進入Hibernate的高級應用之前,需要了解聲明是數(shù)據(jù)模型與領域模型,這兩個概念將會幫助我們更好的理解實體對象的關聯(lián)關系映射
    2022-10-10
  • 2022年最新java?8?(?jdk1.8u321)安裝圖文教程

    2022年最新java?8?(?jdk1.8u321)安裝圖文教程

    這篇文章主要介紹了2022年最新java?8?(?jdk1.8u321)安裝圖文教程,截止2022年1月,官方出的jdk1.8目前已更新到8u321的版本,本文通過圖文并茂的形式給大家介紹安裝過程,需要的朋友可以參考下
    2022-08-08
  • 三行Java代碼實現(xiàn)計算多邊形的幾何中心點

    三行Java代碼實現(xiàn)計算多邊形的幾何中心點

    因為工作需要計算采煤機工作面的中心點,如果套用數(shù)學的計算公式,用java去實現(xiàn),太麻煩了。本文將利用java幾何計算的工具包,幾行代碼就能求出多變形的中心,簡直yyds!還不快跟隨小編一起學起來
    2022-10-10

最新評論

长海县| 阿合奇县| 邵东县| 夹江县| 綦江县| 渝北区| 成武县| 历史| 石棉县| 清丰县| 潜江市| 合川市| 宁化县| 嘉峪关市| 阜新| 泾阳县| 山东省| 连南| 巴塘县| 蛟河市| 巫山县| 原平市| 钟山县| 大连市| 沅陵县| 米林县| 闻喜县| 泰兴市| 舞阳县| 新龙县| 淳化县| 都安| 平定县| 绍兴县| 和平县| 连南| 中阳县| 巴彦县| 永清县| 原平市| 山西省|