java實現(xiàn)打磚塊小游戲
本文實例為大家分享了java實現(xiàn)打磚塊小游戲的具體代碼,供大家參考,具體內(nèi)容如下
源碼共包含兩個文件
文件1:play_zhuankuai.java
import java.awt.*;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class play_zhuankuai extends JPanel implements Runnable{
boolean exit=false;
boolean end=false;
double x=100; //控制小球坐標
double y=100;
double x1=300; //控制底板坐標
double y1=300;
int score=0;
int index[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //標記,記錄磚塊是否被打中
int x2[]=new int[15]; //控制磚塊數(shù)量和坐標
int y2[]=new int[15];
double degree=3.14/3;
Image fangxing;
Image diban;
Image zhuankuai;
Image heiping;
Thread thread;
play_zhuankuai(){ //設置面板屬性
jiazai();
thread = new Thread(this);
setSize(500,500);
setLocation(0,0);
setBackground(Color.black);
setVisible(true);
thread.start();
}
void jiazai(){ //導入圖片
fangxing=Toolkit.getDefaultToolkit().getImage("images/方形.jpg").getScaledInstance(10,10,Image.SCALE_DEFAULT);
diban=Toolkit.getDefaultToolkit().getImage("images/底版.jpg").getScaledInstance(100, 10, Image.SCALE_DEFAULT);
zhuankuai=Toolkit.getDefaultToolkit().getImage("images/磚塊.jpg").getScaledInstance(50, 20, Image.SCALE_DEFAULT);
heiping=Toolkit.getDefaultToolkit().getImage("images/黑屏.png").getScaledInstance(50, 20, Image.SCALE_DEFAULT);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
paint_zhuankuai(g);
g.setColor(Color.blue);
g.drawLine(0, 350, 500, 350);
g.drawImage(diban,(int)x1, (int)y1, null);
paint_heiping(g);
g.drawImage(fangxing, (int)x, (int)y, null);
paint_wenzi(g);
rule();
}
void rule(){
x=x+1*Math.cos(degree);
y=y+1*Math.sin(degree);
if(y>=500-50||score==1500){
end=true;
}
if(x>=500-20||x<=0)
degree=3.14-degree;
if(x1<=0)
x1=0;
if(x1>=400)
x1=400;
if(y1>=500-50)
y1=500-50;
if(y1<=350)
y1=350;
if(y>=y1-10&&x>=x1&&x<=x1+100||y<=0)
degree=-degree;
for(int i=0;i<x2.length;i++){
if((y>=y2[i]&&y<=y2[i]+20)&&((x>=x2[i]&&x<=x2[i]+50))&&index[i]==0){
index[i]=1;
degree=-degree;
score+=100;
}
}
}
void paint_heiping(Graphics g){
for(int i=0;i<x2.length;i++){
if(index[i]==1)
g.drawImage(heiping, x2[i], y2[i], null);
}
}
void paint_wenzi(Graphics g){
g.setColor(Color.red);
g.drawString("分數(shù):"+score, 0, 340);
if(end){
if(score<1500)
g.drawString("游戲結(jié)束!?。?,200,250);
else
g.drawString("闖關(guān)成功?。?!",200,250);
exit=true;
}
}
void paint_zhuankuai(Graphics g){
int p=0;
int k=0;
for(int i=0,j=0;i<x2.length;i++){
p=100*j;
j++;
if(p+100>500){
j=1;
p=0;
k=k+60;
}
x2[i]=p;
y2[i]=k;
g.drawImage(zhuankuai, p,k,null);
}
}
@Override
public void run() {
while(!exit){
repaint();
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO 自動生成的 catch 塊
System.out.println("出現(xiàn)錯誤:"+e+"\n");
}
}
}
}
文件2:jframe_main.java
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class jframe_main extends JFrame implements KeyListener{
play_zhuankuai play=new play_zhuankuai();
jframe_main(){
addKeyListener(this);
add(play);
setSize(500,500);
setLocation(0, 0);
setVisible(true);
}
public static void main(String[] args) {
new jframe_main();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==38)
play.y1-=20;
if(e.getKeyCode()==40)
play.y1+=20;
if(e.getKeyCode()==37)
play.x1-=20;
if(e.getKeyCode()==39)
play.x1+=20;
}
@Override
public void keyReleased(KeyEvent e) {
}
}
友情提示:該段源碼會調(diào)用相關(guān)圖片素材,請自行添加,本人在此不方便上傳,望諒解
更多精彩游戲,請參考專題《java經(jīng)典小游戲》
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java開發(fā)者就業(yè)需要掌握的9大專業(yè)技能
這篇文章主要為大家詳細介紹了java就業(yè)前需要掌握的專業(yè)技能,感興趣的小伙伴們可以參考一下2016-09-09
詳解使用spring boot admin監(jiān)控spring cloud應用程序
本篇文章主要介紹了詳解使用spring boot admin監(jiān)控spring cloud應用程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11
淺析SpringBoot多數(shù)據(jù)源實現(xiàn)方案
現(xiàn)在很多項目的開發(fā)過程中,可能涉及到多個數(shù)據(jù)源,像讀寫分離的場景,或者因為業(yè)務復雜,導致不同的業(yè)務部署在不同的數(shù)據(jù)庫上,那么這樣的場景,我們應該如何在代碼中簡潔方便的切換數(shù)據(jù)源呢,本文介紹SpringBoot多數(shù)據(jù)源實現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧2024-02-02
Java內(nèi)部類_動力節(jié)點Java學院整理
內(nèi)部類是指在一個外部類的內(nèi)部再定義一個類。下面通過本文給大家java內(nèi)部類的使用小結(jié),需要的朋友參考下吧2017-04-04
JAVA CountDownLatch(倒計時計數(shù)器)用法實例
這篇文章主要介紹了JAVA CountDownLatch(倒計時計數(shù)器)用法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10
MyBatis基于pagehelper實現(xiàn)分頁原理及代碼實例
這篇文章主要介紹了MyBatis基于pagehelper實現(xiàn)分頁原理及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
springSecurity用戶認證和授權(quán)的實現(xiàn)
Spring?Security?是一個開源的安全框架,提供了基于權(quán)限的訪問控制、身份認證的功能,本文主要介紹了springSecurity用戶認證和授權(quán),具有一定參考價值,感興趣的可以了解一下2024-04-04

