需要看你的tank的draw方法里的內(nèi)容代碼和碰撞檢測代碼。
成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計服務(wù)團隊是一支充滿著熱情的團隊,執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標準與要求,同時竭誠為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)把每個網(wǎng)站當做一個產(chǎn)品來開發(fā),精雕細琢,追求一名工匠心中的細致,我們更用心!
一般二維碰撞檢測基本都是以單位格,也就是坦克的大小格作為單位,提前一格判斷兩個方格是否交叉,如果交叉則在當前,也就是交叉后退后一格這個位置讓它停止當前方向的移動。
① 求Java課程設(shè)計—小游戲(含源代碼)
//hi./srxboys/item/8ce4743da1adc991c2cf29c4
Tank——坦克大戰(zhàn)(簡潔版)源代碼-------(此文檔是自己在韓順平教程總結(jié)而來)
*功能:1.防止敵人的坦克重疊運動
*(決定把判斷是否碰撞的函數(shù)寫到EnemyTank類)
*2.可以分關(guān)
*2.1(做一個開始的Panel,它是一個空的)
*2.2開始字體閃爍
*3.可以在玩游戲的時候,暫停和繼續(xù)
*3.1當用戶點擊暫停時,子彈的速度和坦克速度設(shè)為0,并讓坦克的方向
*不要發(fā)生變化。
*4.可以記錄玩家的成績
*4.1用文件流的方式(小游戲)[大游戲是用的數(shù)據(jù)庫cs,bs結(jié)構(gòu),三國]
*4.2單寫一個記錄類,完成對玩家的記錄
*4.3先完成保存共擊毀了多少輛敵人坦克的功能
*4.4存盤退出游戲,可以記錄當時的敵人的坦克坐標,并可以恢復(fù)
*5.java如何操作聲音文件
*/
② JAVA課程設(shè)計,求個能用eclipse實現(xiàn)小游戲或小程序的源代碼。感激不盡
你自己來去下自載吧,這里面都有 //oschina/project/java
③ 用JAVA編寫一個小游戲
前天寫的猜數(shù)字游戲,yongi控制猜測次數(shù),有詳細解析,用黑窗口可以直接運行,
我試驗過了,沒問題
import javax.swing.Icon;
import javax.swing.JOptionPane;
public class CaiShuZi4JOptionPane {
/**
* @param args
*/
public static void main(String[] args) {
Icon icon = null;
boolean bl = false;
int put = 0;
int c = (int) (((Math.random())*100)+1); //獲取一個1-100的隨機數(shù)
System.out.println("你獲取的隨機數(shù)是:"+c); //打印你的隨機數(shù)字
String str1 = (String) JOptionPane.showInputDialog(null,"請輸入你的猜測數(shù)字(1-100): ","猜數(shù)字游戲",JOptionPane.PLAIN_MESSAGE,icon,null,"在這輸入"); //第一次輸入你的猜測數(shù)字
if(str1==null){
JOptionPane.showMessageDialog(null, "你已經(jīng)取消了本次游戲"); //如果你點取消那么本次游戲結(jié)束
}else{
bl = num(str1); //判斷是輸入的是不是數(shù)字或者是整數(shù)
if(true==bl){ //如果是數(shù)字的話進入與隨機數(shù)比較的程序
System.out.println("你輸入的數(shù)字是:"+str1); //打印你輸入的數(shù)字
put = Integer.valueOf(str1);
for(int i = 4;i 0;i--){ //i是你可以猜測的次數(shù)
if(put==c){
JOptionPane.showMessageDialog(null, "恭喜你猜對了,正確答案是:"+c+"。"); //如果你猜對了就直接結(jié)束循環(huán)
break;
}else if(putc){ //如果輸大了就讓你再次從新輸入
str1 = (String) JOptionPane.showInputDialog(null,"你的輸入過大。你還有"+i+"次機會,請重新輸入: ","猜數(shù)字游戲",JOptionPane.PLAIN_MESSAGE,icon,null,"在這輸入");
if(str1==null){
JOptionPane.showMessageDialog(null, "你已經(jīng)取消了本次輸入");
break;
}else{
bl =num(str1);
if(true==bl){
put = Integer.valueOf(str1);
}else{
JOptionPane.showMessageDialog(null, "你的輸入不正確,請重新輸入");
}
}
}else if(putc){ //如果你輸小了也讓你從新輸入
str1 = (String) JOptionPane.showInputDialog(null,"你的輸入過小。你還有"+i+"次機會,請重新輸入: ","猜數(shù)字游戲",JOptionPane.PLAIN_MESSAGE,icon,null,"在這輸入");
if(str1==null){
JOptionPane.showMessageDialog(null, "你已經(jīng)取消了本次輸入");
break;
}else{
bl =num(str1);
if(true==bl){
put = Integer.valueOf(str1);
}else{
JOptionPane.showMessageDialog(null, "你的輸入不正確,請重新輸入");
}
}
}
}
}else if(bl==false){ //這個 是你第一次如果填寫的不是數(shù)字的話也會結(jié)束本次游戲
JOptionPane.showMessageDialog(null, "請您下次按要求填寫。本次游戲結(jié)束");
}
if(true==bl c!=put){ //如果你i次都沒猜對,那么就直接告訴你這個數(shù)十什么
JOptionPane.showMessageDialog(null, "很遺憾你沒能猜對,這個數(shù)字是:"+c+".");
}
}
}
public static boolean num(String value){ //一個靜態(tài)方法,判斷你輸入的是不是數(shù)字
try {
Integer.parseInt(value);
return true;
} catch (Exception e) {
return false;
}
}
}
④ 用java制作一個小游戲 教學(xué)
static Scanner in =new Scanner(System.in);
public static int aaa(){
int c = 0;
while(true){
try {
if(c999c10000){
break;
}else{
// System.out.println("請輸入4位整數(shù)");
c= in.nextInt();
if(c999c10000){
break;
}else{
System.out.println("輸入有誤,請重新輸入4位整數(shù)");
}
}
} catch (Exception e) {
System.out.println("請輸入整數(shù)");
c= in.nextInt();
}
}
//in.close();
return c;
}
public static void cai(){
//Scanner sa =new Scanner(System.in);
int haoma=(int)(Math.random()*10000);
if(haoma999)
{
haoma = Integer.parseInt(String.valueOf(haoma)+"0");
}
System.out.println(haoma);
System.out.println("請輸入一位4位整數(shù)");
int aa = 0;
while(true){
aa= aaa();
String pd=String.valueOf(aa);
if(pd.length()!=4){
aa = aaa();
}else{
break;
}
}
while(true){
if(aa==haoma){
System.out.println("你猜對了,可以去買彩票了");
}else{
System.out.println("抱歉 , 你猜錯了");
}
System.out.println("是否繼續(xù)1繼續(xù) 其他結(jié)束");
try {
int ss = in.nextInt();
if(ss==1){
cai();
}else{
break;
}
} catch (Exception e) {
in.close();
break;
}
}
}
public static void main(String[] args) {
System.out.println("歡迎來到猜號小游戲");
cai();
System.out.println("over");
}
⑤ 想做一個java小游戲 誰能給幾個創(chuàng)意啊 注意 是創(chuàng)意?。。。?! 不是已有的有創(chuàng)意的小游戲
比如有東西扔過來,選擇吃掉或者躲開,考反應(yīng)吧。
⑥ 急求java課程設(shè)計,內(nèi)容可以是小游戲的,如(迷宮,計算器,停車場之戀的),要能運行,謝謝
俄羅斯方塊,貪吃蛇。推箱子。
⑦ 求JAVA期末課程設(shè)計,要那種開發(fā)的小項目軟件。可以是像記事本那種,也可以是小游戲那種。
網(wǎng)上搜不到的一般是不可共享的資源,建議去圖書館找本專門針對課程設(shè)計的書,里面的資料很豐富,你可以照著做一下,并作功能上適當?shù)脑鰷p,這樣網(wǎng)上就很難找到了
坦克大戰(zhàn)源代碼應(yīng)該是個完整的項目吧。
對于完整的帶項目配置文件的java源碼,按步驟操作即可:
File - Import - General
選擇Existing Projects into Workspace,選擇要導(dǎo)入的文件,點擊“finish",OK。
package com.bjsxt.tank;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* 這個類的作用是坦克游戲的主窗口
* @author mashibing
*
*/
public class TankClient extends Frame {
/**
* 整個坦克游戲的寬度
*/
public static final int GAME_WIDTH = 800;
public static final int GAME_HEIGHT = 600;
Tank myTank = new Tank(50, 50, true, Direction.STOP, this);
Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this);
ListExplode explodes = new ArrayListExplode();
ListMissile missiles = new ArrayListMissile();
ListTank tanks = new ArrayListTank();
Image offScreenImage = null;
Blood b = new Blood();
public void paint(Graphics g) {
/*
* 指明子彈-爆炸-坦克的數(shù)量
* 以及坦克的生命值
*/
g.drawString("missiles count:" + missiles.size(), 10, 50);
g.drawString("explodes count:" + explodes.size(), 10, 70);
g.drawString("tanks count:" + tanks.size(), 10, 90);
g.drawString("tanks life:" + myTank.getLife(), 10, 110);
if(tanks.size() = 0) {
for(int i=0; iInteger.parseInt(PropertyMgr.getProperty("reProduceTankCount")); i++) {
tanks.add(new Tank(50 + 40*(i+1), 50, false, Direction.D, this));
}
}
for(int i=0; imissiles.size(); i++) {
Missile m = missiles.get(i);
m.hitTanks(tanks);
m.hitTank(myTank);
m.hitWall(w1);
m.hitWall(w2);
m.draw(g);
//if(!m.isLive()) missiles.remove(m);
//else m.draw(g);
}
for(int i=0; iexplodes.size(); i++) {
Explode e = explodes.get(i);
e.draw(g);
}
for(int i=0; itanks.size(); i++) {
Tank t = tanks.get(i);
t.collidesWithWall(w1);
t.collidesWithWall(w2);
t.collidesWithTanks(tanks);
t.draw(g);
}
myTank.draw(g);
myTank.eat(b);
w1.draw(g);
w2.draw(g);
b.draw(g);
}
public void update(Graphics g) {
if(offScreenImage == null) {
offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.BLACK);
gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
}
/**
* 本方法顯示坦克主窗口
*
*/
public void lauchFrame() {
int initTankCount = Integer.parseInt(PropertyMgr.getProperty("initTankCount"));
for(int i=0; iinitTankCount; i++) {
tanks.add(new Tank(50 + 40*(i+1), 50, false, Direction.D, this));
}
//this.setLocation(400, 300);
this.setSize(GAME_WIDTH, GAME_HEIGHT);
this.setTitle("TankWar");
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
this.setBackground(Color.GREEN);
this.addKeyListener(new KeyMonitor());
setVisible(true);
new Thread(new PaintThread()).start();
}
public static void main(String[] args) {
TankClient tc = new TankClient();
tc.lauchFrame();
}
private class PaintThread implements Runnable {
public void run() {
while(true) {
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private class KeyMonitor extends KeyAdapter {
public void keyReleased(KeyEvent e) {
myTank.keyReleased(e);
}
public void keyPressed(KeyEvent e) {
myTank.keyPressed(e);
}
}
}
java 作圖 不一定要繼承JFrame或者Frame,但是所有的組件必須放到頂層容器,Java Swing 有三種頂層容器
JFrame:用來設(shè)計類似于Windows系統(tǒng)中的窗口形式的應(yīng)用程序。
·JDialog:和JFrame類似,只不過JDialog是用來設(shè)計對話框。
·JApplet:用來設(shè)計可以在嵌入在網(wǎng)頁中的Java小程序。
而且你的代碼 Kosese001既然繼承了JFrame 那么他的構(gòu)造就是個JFrame ,你下面又new JFrame("坦克大戰(zhàn)");這樣何必繼承,直接在構(gòu)造里面實現(xiàn)操作就可以把Kosese001中,
你的背景色沒有顯示出來,是由于JFrame 是頂層容器,它默認的布局會設(shè)置它的背景色,除非你在前面 加上 jfrmMain.setLayout(null);使得布局變成空布局,下面的jfrmMain.getContentPane().setBackground(Color.green); 才會生效,或者你可以通過設(shè)置JFrame上組件的背景色來完成同樣的效果 比如 mypaint = new MyPaint();
mypaint.setBackground(Color.green); 還有啥不懂的 可以問我。