1. 程式人生 > >Java飛行球遊戲零基礎快速入門

Java飛行球遊戲零基礎快速入門

遊戲簡介

玩家使用鍵盤的上、下鍵來控制藍色小球的上下移動,避開所有障礙物達到終點即獲勝,類似很早很早以前三星手機上的彩虹飛遊戲和近兩三年十分火爆的Flappy Bird手遊。

遊戲截圖

 

程式碼實現

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class FlyBallGame extends JFrame {

	MyPanel jp = null;

	void initJFrame() {
		jp = new MyPanel();
		this.add(jp);
		this.addKeyListener(jp);
		this.setTitle("飛行球遊戲");
		this.setSize(700, 425);
		this.setLocation(100, 100);
		this.setResizable(false);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		new PaintThread().start();
	}

	class PaintThread extends Thread {
		public void run() {
			while (true) {
				repaint();
				try {
					Thread.sleep(40);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static void main(String[] args) {
		FlyBallGame game = new FlyBallGame();
		game.initJFrame();
	}
}

class MyPanel extends JPanel implements KeyListener {
	Image imageBall = Toolkit.getDefaultToolkit().getImage("image/ball.png");
	Image imageBG = Toolkit.getDefaultToolkit().getImage("image/background.jpg");
	double x = 10.0;
	double y = 180.0;
	double time = 0.0;

	public void paint(Graphics g) {
		super.paint(g);
		g.drawImage(imageBG, 0, 0, null);
		g.drawImage(imageBall, (int) x, (int) y, 40, 40, null);
		if (x > 700 - 40) {
			g.drawString("挑  戰  勝  利!", 320, 200);
		} else if ((x > 155 - 40 && x < 190 && y < 140) || (x > 155 - 40 && x < 190 && y > 262 - 40)) {
			g.drawString("挑  戰  失  敗!", 320, 200);
		} else {
			x += 2.0;
			y += 0.5 * 9.8 * time * time;
			time += 0.02;
		}
	}

	public void keyPressed(KeyEvent e) {
		if (e.getKeyCode() == KeyEvent.VK_UP) {
			y -= 2.0;
			time = 0.0;
		} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
			y += 2.0;
			time = 0.0;
		}
		repaint();
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub

	}
}

PS

此程式碼中只給出了第一個障礙物的碰撞檢測,後續障礙物的碰撞檢測已省略。小球模擬自由落體的方式下落。

相關推薦

Java飛行遊戲基礎快速入門

遊戲簡介 玩家使用鍵盤的上、下鍵來控制藍色小球的上下移動,避開所有障礙物達到終點即獲勝,類似很早很早以前三星手機上的彩虹飛遊戲和近兩三年十分火爆的Flappy Bird手遊。 遊戲截圖   程式碼實現 import java.awt.Graphics; import

Java程式設計基礎快速入門教程索引

Java入門到精通java零起點程式設計教程.精心挑選了java中含金量高的知識點.Window安裝JDK圖文教程.windows搭建java開發環境,配置java環境變數圖文教程.java程式Hell

Python 基礎 快速入門 趣味教程 (咪博士 海龜繪圖 turtle) 2. 變量

b- 剛才 math .com war 單位 中學 技術分享 sublime 大家在中學就已經學過變量的概念了。例如:我們令 x = 100,則可以推出 x*2 = 200 試試下面這段 Python 代碼 1 import turtle 2 3 turtle.sha

1、HTML+DIV+CSS基礎快速入門到制作企業站視頻課程_2 html列表的用法

pre inf java src TP 入門到 超文本 技術分享 分享 0.無序列表 1.有序列表 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <m

1、HTML+DIV+CSS基礎快速入門到制作企業站視頻課程_12 css邊框

技術分享 blue color 入門到 div 視頻 ted col ID 復合寫法: border: 2px solid red; 分開寫法: border-color: red; border-bottom-color: blue; border-bo

1、HTML+DIV+CSS基礎快速入門到制作企業站視頻課程_20 css樣式作業

order 技術分享 enter -a bsp 樣式 over model ctype 1、HTML+DIV+CSS零基礎快速入門到制作企業站視頻課程_20 css樣式作業 1 <!DOCTYPE html> 2 <html lan

基礎快速入門SpringBoot2.0 (一)

acc href 項目文件 apache tro maven打包 相關 utf tps 零基礎快速入門SpringBoot2.0 (一) 一、SpringBoot2.x依賴環境和版本新特性說明 簡介:講解新版本依賴環境和springboot2新特性概述

基礎快速入門SpringBoot2.0 教程(二)

新版本 exec list string classes 控制器 project mat 生命 一、SpringBoot2.x使用Dev-tool熱部署簡介:介紹什麽是熱部署,使用springboot結合dev-tool工具,快速加載啟動應用 官方地址:https://do

基礎快速入門SpringBoot2.0教程 (四)

trace ssh ket files frame ali serialize fis 系統服務 一、JMS介紹和使用場景及基礎編程模型簡介:講解什麽是小寫隊列,JMS的基礎知識和使用場景 1、什麽是JMS: Java消息服務(Java Message Service),J

python爬蟲實踐——基礎快速入門(二)爬取豆瓣電影

爬蟲又稱為網頁蜘蛛,是一種程式或指令碼。 但重點在於,它能夠按照一定的規則,自動獲取網頁資訊。 爬蟲的基本原理——通用框架 1.挑選種子URL; 2.講這些URL放入帶抓取的URL列隊; 3.取出帶抓取的URL,下載並存儲進已下載網頁庫中。此外,講這些URL放入帶抓取UR

基礎快速入門web學習路線(含視訊教程)

下面小編專門為廣大web學習愛好者彙總了一條完整的自學線路:零基礎快速入門web學習路線(含視訊教程)(絕對純乾貨)適合初學者的最新WEB前端學習路線彙總! 在當下來說web前端開發工程師可謂是高福利、高薪水的職業了。所以現在學習web前端開發的技術人員也是日益增多了,但是在學習web前端開發中盲目的去學習

【springboot】一、基礎快速入門springboot2.0.6

1、springboot2.X 課程全套介紹和高手系列知識點 簡介:介紹Springboot2.x課程大綱章節 java基礎,jdk環境,maven基礎 2、Springboot2.x依賴環境和版本新特性說明 簡介:講解新版本依賴環境和Springboot2.x新特性概述 1、依賴版

python爬蟲實踐——基礎快速入門(四)爬取小豬租房資訊

接下來我們爬取小豬短租租房資訊。進入主頁後選擇深圳地區的位置。地址如下: http://sz.xiaozhu.com/ 一,標題爬取 按照慣例,我們先複製標題的xpath資訊,多複製幾個進行對比: //*[@id="page_list"]/ul/li[1]/

git基礎快速入門實戰,重點講解,在實際生產中整合idea對版本、分支的管理等

html lan 幫助 rec 工具 log .com 咖啡館 ise 1、git簡單描述   git是重要的版本管理工具,幾乎每個碼農都有自己的git賬號管理自己的代碼,同時很多公司也是用git管理公司的代碼,   因此掌握git在實際生產中的常規使用非常重要。 2

java併發程式設計一一多執行緒基礎快速入門

1.執行緒與程序的區別 每個正在系統上執行的程式都是一個程序。每個程序包含一到多個執行緒。執行緒是一組指令的集合,或者是程式的特殊段,他可以在程式裡獨立執行。也可以把它理解為程式碼執行的上下文。 所以執行緒基本是輕量級的程序,它負責在單個程式裡執行任務。通常有作業系統負責多個執行緒

java基礎如何入門、給初學者的建議

推薦一個Java學習交流群 523401738每天晚上在騰訊課堂都有一個Java技術學習課,會有老師分享乾貨,幫助大家分析解答問題歡迎你的加入對於初入Java的學生們來說,都會有一個疑惑?我適合學習程式設計嗎? 程式設計入門遇到難題的時候想到過放棄,當你寫完一個程式的時候感到

答好友困惑:Java基礎如何入門,不知道怎麼學,迷茫ING

作者:程式設計師小躍 幾個星期之前,我在知乎上看到一個提問,說是:對於完全沒有經驗零基礎自身的數學底子也很弱學習Java應該怎麼學習呢?想著類似的問題我也有過回答,並且反饋還是蠻好的,就參考之前的思路回答了一遍,可惜沒在公眾號裡和大家分享,後續再整理一份好好分享下。(該問答地址見原文) 提出問題的是一位高

C#消息隊列(MQ)基礎入門到實戰演練

C# .NET MQ RabbitMQ 消息隊列 一、課程介紹如果您從工作中之聽過但未有接觸過消息對隊列(MQ),如果你接觸過一點關於MQ的知識,如果沒有這麽的多如果的話......,那麽阿笨將通過本次《C#消息隊列零基礎從入門到實戰演練》分享課讓您對消息隊列有一個實質性的了解和認識,達到

H5和小程序直播開發 距離快速入門

以及 重要 掌握 經驗 導致 技巧 地址 很大的 net 第1章 課程介紹 對於課程整體以及直播行業的現狀進行介紹 第2章 直播工作原理 所謂知其然也要知其所以然,只會用別人總結好的東西很難有質的進步,只有深諳背後的工作原理才能進一步吃透到進階。本章從直播協議入手到工作原理

Expression Blend實例中文教程(7) - 動畫基礎快速入門Animation

edr 周期 oar 都是 自動 開發人員 rpo src 微軟 通過前面文章學習,已經對Blend的開發界面,以及控件有了初步的認識。本文將講述Blend的一個核心功能,動畫設計。大家也許註意到,從開篇到現在,所有的文章都是屬於快速入門,是因為這些文章,都是我曾經學習的經