;

成都創(chuàng)新互聯(lián)是一家專業(yè)提供浦東企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為浦東眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
要制造那種效果只需要大約 30 行 Java 代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class RollingBall extends JPanel {
Ellipse2D.Float ball = new Ellipse2D.Float( -100, 100, 50, 50 );
public void paintComponent( Graphics g ) {
super.paintComponent( g );
Graphics2D g2 = ( Graphics2D ) g;
// Draw the ball
g2.fill( ball );
// Draw the rotating ellipse by skewing the Device Space
double angdeg =?????// One rotation per ball's travelling over its perimeter
ball.x++ % ( Math.PI * ball.width ) / ( Math.PI * ball.width ) * 360;
g2.rotate( Math.toRadians( angdeg ), ball.getCenterX( ), ball.getCenterY( ) );
g2.scale( .5, 1 );
g2.translate( ball.getCenterX( ), 0 );
g2.setColor( Color.gray );
g2.fill( ball );
}
public void roll( ) throws Exception {
while( true ) {
repaint( );
Thread.sleep( 8 );
}
}
public static void main( String[ ] args ) throws Exception {
JFrame f = new JFrame( );
RollingBall rb = new RollingBall( );
f.setSize( 999, 185 );
f.getContentPane( ).add( rb );
f.setVisible( true );
rb.roll( );
}
}
#includegraphics.h
#includeconio.h
#define HIGH 480
#define WIDTH 640
#define N 14//磚塊的數(shù)目
int ball_x,ball_y;
int ball_vx,ball_vy;
int radius;
int bar_x,bar_y;
int bar_high,bar_width;
int bar_left,bar_right,bar_top,bar_bottom;
int isbrick[N];
int brick_high,brick_width;
void startup()//數(shù)據(jù)初始化
{
initgraph(640,480);
ball_x=WIDTH/2;
ball_y=HIGH/2;
ball_vx=4;
ball_vy=4;
radius=20;
bar_high=HIGH/14;
bar_width=WIDTH/4;
bar_x=WIDTH/2;
bar_y=HIGH-bar_high/2;
bar_left=bar_x-bar_width/2;
bar_right=bar_x+bar_width/2;
bar_top=bar_y-bar_high/2;
bar_bottom=bar_y+bar_high/2;
brick_width=WIDTH/N;
brick_high=HIGH/N;
int i;
for(i=0;iN;i++)
isbrick[i]=1;
BeginBatchDraw();
}
void clear()//清除畫面
{
setcolor(BLACK);
setfillcolor(BLACK);
fillcircle(ball_x,ball_y,radius);
bar(bar_left,bar_top,bar_right,bar_bottom);
int i,brick_left,brick_right,brick_top,brick_bottom;
for(i=0;iN;i++)
{
brick_left=i*brick_width;
brick_right=brick_left+brick_width;
brick_top=0;
brick_bottom=brick_high;
if(!isbrick[i])
fillrectangle(brick_left,brick_top,brick_right,brick_bottom);
}
}
void show()//顯示畫面
{
setcolor(RED);
setfillcolor(WHITE);
fillcircle(ball_x,ball_y,radius);
bar(bar_left,bar_top,bar_right,bar_bottom);
int i,brick_left,brick_right,brick_top,brick_bottom;
for(i=0;iN;i++)
{
brick_left=i*brick_width;
brick_right=brick_left+brick_width;
brick_top=0;
brick_bottom=brick_high;
if(isbrick[i])
{setcolor(WHITE);
setfillcolor(BROWN);
fillrectangle(brick_left,brick_top,brick_right,brick_bottom);
}
}
FlushBatchDraw();
Sleep(10);
}
void output()//與用戶輸入無(wú)關(guān)的更新
{
if(((ball_y+radius=bar_top)(ball_y+radiusbar_bottom-bar_high/3))
||((ball_y-radius=bar_bottom)(ball_y-radiusbar_top-bar_high/3)))
if((ball_x=bar_left)(ball_x=bar_right))//擋板與小球碰撞
ball_vy=-ball_vy;
ball_x=ball_x+ball_vx;//小球更新坐標(biāo)
ball_y=ball_y+ball_vy;
if((ball_x=radius)||(ball_x=WIDTH-radius))//小球碰到邊框返回
ball_vx=-ball_vx;
if((ball_y=radius)||(ball_y=HIGH-radius))
ball_vy=-ball_vy;
int i,brick_left,brick_right,brick_top,brick_bottom;//判斷小球是否和磚塊碰撞
for(i=0;iN;i++)
{
if(isbrick[i])//磚塊存在
{
brick_left=i*brick_width;
brick_right=brick_left+brick_width;
brick_bottom=brick_high;
if((ball_y==brick_bottom+radius)(ball_x=brick_left)(ball_x=brick_right))
{
isbrick[i]=0;
ball_vy=-ball_vy;
}
}
}
}
void Input()//與用戶輸入有關(guān)的更新
{
{
MOUSEMSG m;//定義鼠標(biāo)信息
if(MouseHit())//檢測(cè)當(dāng)前是否有鼠標(biāo)信息
{
m=GetMouseMsg();//獲取一條鼠標(biāo)信息
if(m.uMsg==WM_MOUSEMOVE)
{
//擋板的值得鼠標(biāo)的位置
bar_x=m.x;
bar_y=m.y;
bar_left=bar_x-bar_width/2;
bar_right=bar_x+bar_width/2;
bar_top=bar_y-bar_high/2;
bar_bottom=bar_y+bar_high/2;
}
else if(m.uMsg==WM_LBUTTONDOWN)//按下鼠標(biāo)左鍵,初始化小球的位置為擋板上面中心
{
ball_x=bar_x;
ball_y=bar_top-radius-3;
}
}
}
}
void gameover()//游戲結(jié)束
{
EndBatchDraw();
closegraph();
}
main()
{
startup();
while(1)
{
clear();
output();
Input();
show();
}
gameover();
return 0;
}
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
import javax.swing.JFrame;
public class dazhuankuai implements KeyListener
{
private JFrame jframe;
Canvas canvas;
board b;
int x;
int scoret;
int diffscore;
private int canvaswidth = 400;//canvas 的屬性
private int canvasheight =600;
dazhuankuai(){
jframe = new JFrame("打磚塊");
canvas = new Canvas();
canvas.setSize(canvaswidth, canvasheight);
canvas.addKeyListener(this);
jframe.add(canvas);
jframe.setBounds(320, 100,410, 500);
jframe.addKeyListener(this);
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
begin();
}
public void begin()
{ b=new board(this);
b.run();
b.ball.vx=5;
b.ball.vy=10;
}
void paint()
{Graphics g = canvas.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 400, 350);
for(int i=0;i20;i++)
for(int j=0;j20;j++)
if(b.matrix[i][j]){
g.setColor(b.brickcolor[i][j]);
g.fillRect(i*20, j*10, 20, 10);
g.setColor(Color.white);
g.drawRect(i*20, j*10, 20, 10);}
g.setColor(Color.RED);
if(b.ball.y=350)
g.fillOval(b.ball.x, b.ball.y, 10, 10);
}
void paintrect()
{Graphics g = canvas.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 350, 400, 10);
g.setColor(Color.black);
g.fillRect(b.leftpoint, 350, 50, 10);
}
void paintscore()
給一個(gè)建議參考,如果你覺得有用可以試試哈~
用一個(gè)結(jié)構(gòu)體定義小球,包含的其中一個(gè)變量:short direction;用來(lái)指示運(yùn)動(dòng)方向,再包含一個(gè)函數(shù)指針,指向一個(gè)函數(shù)如:short funL();若小球四周均沒有障礙,返回0,優(yōu)先判斷上下,再判斷左右,或反過(guò)來(lái),再根據(jù)哪個(gè)方向有障礙返回1~4,1~4分別代表什么方向自己定義,可以用宏,若函數(shù)返回1~4,根據(jù)相應(yīng)的情況改變變量direction的值就可以了
c語(yǔ)言游戲中實(shí)現(xiàn)動(dòng)畫靠的是1秒鐘多于25次的刷新。大一用easyx做過(guò)類似的,現(xiàn)在有點(diǎn)忘了,核心思想大概是
while(判斷游戲未結(jié)束)//時(shí)間沒停,未觸發(fā)游戲終止標(biāo)志
{
for(int?i=0;iobjectNum;i++)
{
//根據(jù)時(shí)間更新每個(gè)磚塊的狀態(tài)
//如果某磚塊的flag設(shè)為被打到,清除該物品,如果是鏈表刪節(jié)點(diǎn)
//未被打到,磚塊.y更新
}
//畫背景圖
for(int?i=0;iobjectNum;i++)
{
//畫每個(gè)磚塊
}
//獲取用戶命令
//一旦有命令,DispatchCommand()
//調(diào)用那個(gè)函數(shù),檢測(cè)鼠標(biāo)位置停留的時(shí)候是不是按鍵了,檢測(cè)有沒有操作磚塊
//sleep(100ms),延時(shí)造成視覺停留
}
網(wǎng)站欄目:小球打磚塊java源代碼,java 打磚塊
本文網(wǎng)址:http://chinadenli.net/article44/dsgpghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站制作、App設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)