原来摩托罗拉手机上有一个类似于打砖块的游戏.谁知道叫什么

Python012

原来摩托罗拉手机上有一个类似于打砖块的游戏.谁知道叫什么,第1张

游戏应该是:

上面有排列成不同阵型的砖块,下面有一个可以活动的木条,把上面的小球抛出去,然后小球撞击到的砖块都会消失,每次都要用下面的可活动木条接住小球,再弹上去。直到所有砖块被击碎,则成功。

这款游戏当初就叫打砖块,应该类似于下图。现在已经经过很多改版了,之前的那款游戏已经搜索不到了,可以找一些类似的“打砖块”游戏。

你好,你说的是不是那个小球被屏幕底部的杠杆弹上去,可以打上面的东西,这应该是打砖块系列的游戏,要是想在现在再找那种像以前的一样很经典的几乎是找不到了,不过你可以试试图里这个,是我后来玩过的这类游戏里属于经典的了,在应用宝上安装就可以了官方版质量有保证,希望你能喜欢吧_(:зゝ∠)_

import java.applet.Applet

import java.awt.Color

import java.awt.Dimension

import java.awt.Event

import java.awt.Font

import java.awt.FontMetrics

import java.awt.Frame

import java.awt.Graphics

import java.awt.Image

import java.awt.event.KeyEvent

import java.awt.event.KeyListener

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

public class ballApplet extends Applet implements Runnable {

Dimension d

Font bFont = new Font("Helvetica", Font.BOLD, 24)

Font sFont = new Font("Helvetica", Font.BOLD, 14)

FontMetrics fmSmall, fmBig

Graphics goff

Image img

Thread mThread

boolean ingame = false

int ballx, bally, batpos

int batdpos = 0

int balldx = 0, balldy = 0, dxval

int iScroe, ballNum

boolean[] showbrick

int brickNumOfLine

final int bWidth = 5

final int batW = 20

final int ballsize = 5

final int batH = 5

final int scoreH = 25

final int brickW = 15

final int brickH = 8

final int space = 1

final int backcol = 0x102040

final int line = 4

final int startline = 32

public void init() {

Graphics g

d=size()

setBackground(new Color(backcol))

brickNumOfLine = (d.width-2*bWidth)/(brickW +space)

d.width = brickNumOfLine*(brickW+space)+(2*bWidth)

g = getGraphics()

g.setFont(sFont)

fmSmall= g.getFontMetrics()

g.setFont(bFont)

fmBig = g.getFontMetrics()

showbrick = new boolean[brickNumOfLine*line]

this.addKeyListener(new BallGameKeyListener())

GameInit()

}

public void GameInit() {

batpos = (d.width - batW) / 2

ballx = (d.width - ballsize) / 2

bally = (d.height - ballsize - scoreH - 2 * bWidth)

iScroe = 0

ballNum = 3

dxval = 2

if (Math.random() <0.5)

balldx = dxval

else

balldx = -dxval

balldy = -dxval

batdpos = 0

InitBricks()

}

public void InitBricks() {

int i

for (i = 0i <line * brickNumOfLinei++)

showbrick[i] = true

}

// public boolean keyDown(Event e, int key) {

// if (ingame) {

// if (key == Event.LEFT)

// batdpos = -4

// if (key == Event.RIGHT)

// batdpos = 4

// if (key == Event.ESCAPE)

// ingame = false

// } else {

// if (key == 's' || key == 'S') {

// ingame = true

// GameInit()

// }

// }

// return true

// }

//

// public boolean keyUp(Event e, int key) {

// if (key == Event.LEFT || key == Event.RIGHT)

// batdpos = 0

// return true

// }

public void paint(Graphics g) {

if (goff == null &&d.width >0 &&d.height >0) {

img = createImage(d.width, d.height)

goff = img.getGraphics()

}

if (goff == null || img == null)

return

goff.setColor(new Color(backcol))

goff.fillRect(0, 0, d.width, d.height)

if (ingame)

PlayGame()

else

ShowIntroScreen()

g.drawImage(img, 0, 0, this)

}

public void PlayGame() {

MoveBall()

CheckBat()

CheckBricks()

DrawPlayField()

DrawBricks()

ShowScore()

}

public void ShowIntroScreen() {

MoveBall()

CheckBat()

CheckBricks()

BatDummyMove()

DrawPlayField()

DrawBricks()

ShowScore()

goff.setFont(bFont)

goff.setColor(new Color(96, 128, 255))

String s = "弹球游戏"

goff.drawString(s, (d.width - fmBig.stringWidth(s)) / 2, (d.height

- scoreH - bWidth) / 2 - 20)

goff.setFont(sFont)

goff.setColor(new Color(128, 255, 32))

s = "请按下'S'键开始游戏"

goff.drawString(s, (d.width - fmSmall.stringWidth(s)) / 2, (d.height

- scoreH - bWidth) / 2 + 30)

goff.setColor(new Color(255, 160, 64))

s = "使用方向键控制球拍移动"

goff.drawString(s, (d.width - fmSmall.stringWidth(s)) / 2, (d.height

- scoreH - bWidth) / 2 + 50)

}

public void DrawBricks() {

int i, j

boolean nobricks = true

int colorDelta = 255 / (line - 1)

for (j = 0j <linej++) {

for (i = 0i <brickNumOfLinei++) {

if (showbrick[j * brickNumOfLine + i]) {

nobricks = false

goff.setColor(new Color(255, j * colorDelta, 255 - j

* colorDelta))

goff.fillRect(bWidth + i * (brickW + space), startline + j

* (brickH + space), brickW, brickH)

}

}

}

if (nobricks) {

InitBricks()

if (ingame)

iScroe += 100

}

}

public void DrawPlayField() {

goff.setColor(Color.white)

goff.fillRect(0, 0, d.width, bWidth)

goff.fillRect(0, 0, bWidth, d.height)

goff.fillRect(d.width - bWidth, 0, bWidth, d.height)

goff.fillRect(0, d.height - bWidth, d.width, bWidth)

goff.fillRect(batpos, d.height - 2 * bWidth - scoreH, batW, batH)

goff.fillRect(ballx, bally, ballsize, ballsize)

}

public void ShowScore() {

goff.setFont(sFont)

goff.setColor(Color.white)

goff.drawString("得分:" + iScroe, 40, d.height - 10)

String s = "生命:" + ballNum

goff

.drawString(s, d.width - 40 - fmSmall.stringWidth(s),

d.height - 10)

}

public void MoveBall() {

ballx += balldx

bally += balldy

if (bally <= bWidth) {

balldy = -balldy

bally = bWidth

}

if (bally >= (d.height - ballsize - scoreH)) {

if (ingame) {

ballNum--

if (ballNum <= 0)

ingame = false

}

ballx = batpos + (batW - ballsize) / 2

bally = startline + line * (brickH + space)

balldy = dxval

balldx = 0

}

if (ballx >= (d.width - bWidth - ballsize)) {

balldx = -balldx

ballx = d.width - bWidth - ballsize

}

if (ballx <= bWidth) {

balldx = -balldx

ballx = bWidth

}

}

public void BatDummyMove() {

if (ballx <(batpos + 2))

batpos -= 3

else if (ballx >(batpos + batW - 3))

batpos += 3

}

public void CheckBat() {

batpos += batpos

if (batpos <bWidth)

batpos = bWidth

else if (batpos >(d.width - bWidth - batW))

batpos = (d.width - bWidth - batW)

if (bally >= (d.height - scoreH - 2 * bWidth - ballsize)

&&bally <(d.height - scoreH - 2 * bWidth)

&&(ballx + ballsize) >= batpos &&ballx <= (batpos + batW)) {

bally = d.height - scoreH - ballsize - bWidth * 2

balldy = -dxval

balldx = CheckBatBounce(balldx, ballx - batpos)

}

}

public int CheckBatBounce(int dy, int delta) {

int sign

int stepsize, i = -ballsize, j = 0

stepsize = (ballsize + batW) / 8

if (dy >0)

sign = 1

else

sign = -1

while (i <batW &&delta >i) {

i += stepsize

j++

}

switch (j) {

case 0:

case 1:

return -4

case 2:

return -3

case 7:

return 3

case 3:

case 6:

return sign * 2

case 4:

case 5:

return sign * 1

default:

return 4

}

}

public void CheckBricks() {

int i, j, x, y

int xspeed = balldx

if (xspeed <0)

xspeed = -xspeed

int ydir = balldy

if (bally <(startline - ballsize)

|| bally >(startline + line * (space + brickH)))

return

for (j = 0j <linej++) {

for (i = 0i <brickNumOfLinei++) {

if (showbrick[j * brickNumOfLine + i]) {

y = startline + j * (space + brickH)

x = bWidth + i * (space + brickW)

if (bally >= (y - ballsize) &&bally <(y + brickH)

&&ballx >= (x - ballsize) &&ballx <(x + brickW)) {

showbrick[j * brickNumOfLine + i] = false

if (ingame)

iScroe += (line - j)

if (ballx >= (x - ballsize)

&&ballx <= (x - ballsize + 3)) {

balldx = -xspeed

} else if (ballx <= (x + brickW - 1)

&&ballx >= (x + brickW - 4)) {

balldx = xspeed

}

balldy = -ydir

}

}

}

}

}

public void run() {

long starttime

Graphics g = getGraphics()

Thread.currentThread().setPriority(Thread.MAX_PRIORITY)

while (true) {

starttime = System.currentTimeMillis()

try {

paint(g)

starttime += 20

Thread.sleep(Math

.max(0, starttime - System.currentTimeMillis()))

} catch (InterruptedException e) {

break

}

}

}

public void start() {

if (mThread == null) {

mThread = new Thread(this)

mThread.start()

}

}

public void stop() {

if (mThread != null) {

mThread.stop()

mThread = null

}

}

public static void main(String[] args) {

Frame frame = new Frame("弹球游戏")

ballApplet app = new ballApplet()

frame.add("Center", app)

frame.setSize(270, 350)

frame.validate()

frame.setVisible(true)

frame.addWindowListener(new WindowControl(app))

app.init()

app.start()

}

class BallGameKeyListener implements KeyListener{

@Override

public void keyPressed(KeyEvent e) {

int key = e.getKeyCode()

// TODO Auto-generated method stub

if (ingame) {

switch(key){

case KeyEvent.VK_ESCAPE:

ingame = false

break

case KeyEvent.VK_RIGHT:

batdpos = 4

break

case KeyEvent.VK_LEFT:

batdpos = -4

break

}

} else {

if (key == KeyEvent.VK_S) {

ingame = true

GameInit()

}

}

}

@Override

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

int key = e.getKeyCode()

if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)

batdpos = 0

}

@Override

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

}

}

class WindowControl extends WindowAdapter {

Applet app

public WindowControl(Applet app) {

this.app = app

}

public void WindowClosing(WindowEvent e) {

app.stop()

app.destroy()

System.exit(0)

}

}

给你+了个keyListener 然后按你的理念给你加入了按键判定。按S按键可以开始游戏但方向键不能移动应该是你的方法错误了你自己修改去把懒得看了。。太长了 一般画可以移动的物体是直接按坐标来画然后移动的时候+= 好哦这-= 控制坐标 我发现你的错误是你用batdpos这个变量去控制移动。。但你根本没用这个变量去画图。。所以不能移动。。你自己去改把。。