只是一個新手入門級專案,希望新手同學能和我得到學習,大佬請手下留情
桌球小游戲專案
先放代碼和效果圖
import java.awt.*;
import javax.swing.*;
public class Ballgame extends JFrame {
Image ball=Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image table=Toolkit.getDefaultToolkit().getImage("images/table.jpg");
double x=200;
double y=200;
double degree=3.14/3;//這里都角度為弧度數,3.14=180度,故degree=60
public void paint(Graphics g){
g.drawImage(table,0,0,null);
g.drawImage(ball,(int)x,(int)y,null);
x+=10* Math.cos(degree);
y+=10*Math.sin(degree);
if(y>440||y<60)
{
degree=-degree;
}
if(x>800||x<30)
{
degree=3.14-degree;
}
}
void launchFrame(){
setSize(856,501);
setLocation(100,100);
setVisible(true);
//實作影片每秒繪制視窗
while(true) {
repaint();
try {
Thread.sleep(40);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
System.out.println("我的小游戲開始了!");
Ballgame game = new Ballgame();
game.launchFrame();
}
}
這里的代碼是跟著老師寫的,新手上路不可能就直接寫出來完整代碼;我在老師代碼的基礎上做了一些優化,例如邊緣碰撞彈回等;后面隨著學習知識的深入,這個專案我會回傳來做完整,加入球桿,小球速度控制,以及進洞處理等;
效果圖:

在這里我認為有幾點的學習最為重要:
1、關于影片效果的呈現,原理是一幀一幀重復播放,通過改變小球位置,來達到影片效果;
2、關于小球碰撞邊緣彈回,需要在圖片尺寸上進行預估,不能讓小球飛出桌子或者穿過了桌子的邊緣,不符合常理;
3、關于小球反彈角度的設計,這里不考慮小球自轉和其他一切因素,僅僅從反射的角度考慮問題,即入射角等于出射角;
4、實際的桌球游戲要比這里的復雜很多很多,因此要做出來一個好游戲還是要付出很多很多心血,考慮很多很多問題的;
5、在java的學習中,雖然無論語法還是表達上,java和c語言都有著很大區別,但是我還是從中體會到了他們之間的聯系,在運算子等一些細微的地方,編程語言大概都著相同的邏輯,我們思考問題的邏輯,程式的設計思路,都是從一個地方出發的;這也更加印證了語言只是工具,但是我們要用好這些各具特色的工具;
6、IDEA真的好用,感覺他能知道我想寫的下一句代碼!!
最后一點:關于圖片的資源,作者也是在網上搬運過來的,JAVA桌球游戲已經很多人做過,我的圖片也有水印,因此就不放了,想做的同學可以隨便去網上查找新資源;
期待對這個專案的繼續深化!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/261086.html
標籤:其他
上一篇:最短路 and 最小生成數 and 二分圖[AcWing學習記錄]
下一篇:免Root腳本之微信自動添加好友
