1. 程式人生 > 程式設計 >java實現打字遊戲小程式

java實現打字遊戲小程式

本文例項為大家分享了java實現打字遊戲小程式的具體程式碼,供大家參考,具體內容如下

一、設計思路

1.建立一個窗體
2.在窗體上放置一個面板,用paint方法畫出英文字母,隨機放置字母位置,並隨時間自動下落
3.設定得分扣分機制
4.在面板上新增鍵盤監聽器,輸入正確得分,輸入錯誤則扣分
ps:面板和監聽器用一個類實現(這樣簡單方便)

二、具體實現

MyPanel.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; /** * 繼承Panel類,Panel是Java中的面板類。基本上要操作窗體都會繼承此類 * */
public class MyPanel extends Panel implements KeyListener{ 
 int x[] = new int[10];//儲存隨機字母x軸 
 int y[] = new int[10];//儲存隨機字母y軸 
 char c[] = new char[10];//儲存隨機字母 
 int integral =1000;//初始1000積分 
 Color p[] =new Color[10];//用來儲存顏色 
 public MyPanel() { 
 for (int i = 0; i < 10; i++) { 
 x[i]=(int)(Math.random()*300);//0-300 
 y[i]=(int)(Math.random()*50);//0-50 
 c[i]=(char)(Math.random()*26+97);//隨機字母 
 p[i]=getRandColorCode();//獲取十六進位制的顏色程式碼.例如 "#6E36B4" 
 } 
 } /** * 複寫Panel類的paint方法 */ 

 public void paint(Graphics g) { 
 if (integral>0) {//如果成績>0,才能進來 
 for (int i = 0; i < 10; i++) {//十個英文字母 
 g.setColor(p[i]);//設定元素顏色 
 g.setFont(new Font("TimesRoman",Font.PLAIN,20)); //設定字型,大小 //1.出現的元素,2.元素的x軸,3.元素的y軸 
 g.drawString(new 
 Character(c[i]).toString().toUpperCase(),x[i],y[i]);//畫出面板上的字母影象 
 }  
 //顯示積分在螢幕上 
 g.setColor(Color.red); 
 g.setFont(new Font("TimesRoman",20)); 
 g.drawString("你的成績是:"+integral,10,30);   
 donghua();  
 }else {//成績<0,遊戲結束 
 g.setColor(Color.red); 
 g.setFont(new Font("TimesRoman",30)); 
 g.drawString("GAME OVER",50,170); 
 } 
 } 

 public void donghua() { 
 for (int i = 0; i < 10; i++) {//對十個字母一直檢測,如果沒有超過面板就縱座標+1,若超過了從頂部就重新生成字母 
 y[i]++;//字母的y軸 加1,既往下移動1個位置 
 if (y[i]>370) {//窗體邊框佔有一部分畫素,所以設定370即可  
 y[i]=0;//設定該字母的縱座標為0  
 x[i]=(int)(Math.random()*300);  
 c[i]=(char)(Math.random()*26+97);  
 integral-=100;//積分-100 
 } 
 try {  
 Thread.sleep(5);//暫停5毫秒,控制字母下落的速度, 
 } 
 catch (InterruptedException e) {}  
 repaint();//重新繪製畫面 
 } 
 } //鍵盤監聽器 

 public void keyPressed(KeyEvent e) { 
 char keyC = e.getKeyChar(); 
 int stat=-1;//儲存最下面字母的值 
 int nowIndex=-1;//儲存最下面字母的下標 
 for (int i = 0; i < 10; i++) {//找出所有匹配字母處於最下面的字母 
 if (keyC==c[i]) { 
 if (y[i]>stat) {//第一次進來時,必定大於,  
 stat=y[i];//記錄座標值  
 nowIndex=i;//記錄字母的下標 
 } 
 } 
 } 
 if (nowIndex!=-1) {//如果!=-1,證明輸入正確,nowIndex為最下面的字母的下標,重新生成。積分+100 
 y[nowIndex]=0; 
 x[nowIndex]=(int)(Math.random()*300); 
 c[nowIndex]=(char)(Math.random()*26+97); 
 integral+=100;//積分+100 
 }else {//如果==-1,證明輸錯了。積分-100 
 integral-=100;//積分-100 
 } 
 } 

/**  * 獲取十六進位制的顏色程式碼.例如 "#6E36B4",* @return String  */ 

 public static Color getRandColorCode(){  
 int r,b,g; 
 r=(int)(Math.random()*250); 
 b=(int)(Math.random()*250); 
 g=(int)(Math.random()*250); 
 Color c =new Color(r,g); 
 return c; } 

 public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } 
 public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub }}

MyTyping.java

import java.awt.Frame;
import java.awt.event.WindowEvent; 
import javax.swing.JFrame;
import javax.swing.WindowConstants; 
public class MyTyping { 
/** 思路: 
1.一個窗體 
2.在窗體繪製元素(隨機出現的字母) 
3.加入鍵盤事件 
4.加入計數器(分數)  
5.匹配鍵盤錄入字母和螢幕上的字母 
一致:消除,並且從最上面重新生成.積分+ 
不一致:不消除,積分- 
沒錄入:不消除,積分- 
6.積分<0,遊戲結束 */ 

public static void main(String[] args) { 
JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定點選x關閉退出程式 
f.setLocationRelativeTo(null);//窗體置中 
f.setSize(300,400);//設定窗體大小 
MyPanel p = new MyPanel(); 
f.add(p);//將面板放入窗體中 
f.addKeyListener(p);//註冊鍵盤事件 
p.addKeyListener(p);//註冊鍵盤事件 
f.setVisible(true);//顯示窗體  
}

三、執行截圖

java實現打字遊戲小程式

更多有趣的經典小遊戲實現專題,分享給大家:

C++經典小遊戲彙總

python經典小遊戲彙總

python俄羅斯方塊遊戲集合

JavaScript經典遊戲 玩不停

javascript經典小遊戲彙總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。