
正文
java弹球代码 java弹球游戏
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
[求助]急求弹球游戏代码
已使用TC2.0 IDE测试,正常运行:
引用:
#include "graphics.h"
#include "math.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x011b
int x,y,x1,y1,key,t1,t2,keyx,keylong,keymove,over=0,i,tt=0,fast;
int ballx[9]={53,103,263,120,236,390,410,450,600};
int bally[9]={158,239,120,113,30,313,120,263,231},ballz[9]={0};
float ls;
win()
{float lx,ly,ll;
for(i=0;i9;i++)
{
if(ballz==1)/*如果球体已经消失就不判断*/
continue;
lx=(float)(ballx-x);
ly=(float)bally-y;
ll=lx*lx+ly*ly;
ls=sqrt(ll);
if((int)ls17)/*判断两球是否碰到*/
{tt++;/*记录消失几个球*/
fast-=50;/*速度加快*/
if(i%2==0)/*移动加快*/
keymove+=5;
else
{
setcolor(0);
rectangle(keyx,460,keyx+keylong,470);
keylong-=10;/*长条变短*/
setcolor(YELLOW);
rectangle(keyx,460,keyx+keylong,470);
}
ballz=1;
setcolor(0);
circle(ballx,bally,10);
if(ybally)
if(xballx)
{t1=-1;t2=-1;}
else
{t1=1;t2=-1;}
else
if(xballx)
{t1=-1;t2=1;}
else
{t1=1;t2=1;}
}
}
}
fungo()
{ x=100,y=50,keyx=200,keylong=100,keymove=15,fast=600;
for(i=0;i9;i++)
{
setcolor(i+1);
circle(ballx,bally,10);
}
sleep(1);
t1=t2=1;
while(1)
{
while(!kbhit())
{
setcolor(YELLOW);
rectangle(keyx,460,keyx+keylong,470);
x1=x;
y1=y;
x+=t1;
y+=t2;
setcolor(4);
circle(x,y,6);
delay(fast);
setcolor(0);
circle(x,y,6);
win();
if(tt==9)/*胜利*/
{
cleardevice();
over=1;
setcolor(RED);
settextstyle(0,0,4);
setusercharsize(3,1,3,1);
outtextxy(200,200," YOU WIN! ");
break;
}
if(y480)/*失败*/
{
cleardevice();
over=1;
setcolor(RED);
settextstyle(0,0,4);
setusercharsize(3,1,3,1);
outtextxy(200,200,"GAME OVER");
break;
}
else if(x==11y==11)/*判断碰到东西*/
{t1=1;t2=1;}
else if(x==629y==11)
{t1=-1;t2=1;}
else if(x==11)
{
if(yy1)
{t1=1;t2=-1;}
else
{t1=1;t2=1;}
}
else if(y==11)
{
if(xx1)
{t1=-1;t2=1;}
else
{t1=1;t2=1;}
}
else if(x==629)
{
if(y1y)
{t1=-1;t2=-1;}
else
{t1=-1;t2=1;}
}
else if(y==449)
{
if(x=keyxx=keyx+keylong)
{
if(x(keyx+keylong/4))
{t1=-1;t2=-1;}
else if(x=(keyx+keylong/4)x(keyx+keylong/2))
{t1=-1;t2=-2;}
else if(x=(keyx+keylong/2)x(keyx+keylong/4*3))
{t1=1;t2=-2;}
else
{t1=1;t2=-1;}
}
}
}
if(over)
break;
key=bioskey(0);
setcolor(0);
rectangle(keyx,460,keyx+keylong,470);
if(key==ESC)
{cleardevice();break;}
else if(key==LEFT)
keyx-=keymove;
else if(key==RIGHT)
keyx+=keymove;
}
}
main()
{int gd=DETECT,gr;
initgraph(gd,gr,"c:\\tc");
fungo();
getch();
sleep(1);
closegraph();
}
相关问答
Q1: JAVA如何实现小球的弹性碰撞
我没用java写过代码,所以我只说算法,代码你自己翻译下
按C的语法来:
void xiaoqiu
{
int UB=10,DB=200,LB=10,RB=200; //定义弹球范围的边界
int sh=1; //定义横向步长
int sz=1; //定义纵向步长(两步长之比决定了反弹的角度)
int x=LB,y=UB; //定义坐标
int i=10000; //循环次数(自己选择跳出手段)
while(i0)
{
i--;
x=x+sh;
if(x=RB||x=LB) sh=-sh; //碰壁后步长变反
y=y+sz;
if(y=DB||y=UB) sz=-sz; //碰壁后步长变反
(显示代码)
}
return;
}
总得来说,就是相当于横向和纵向分别处理移动、反弹的问题,碰壁后步长变为相反数
不懂请追问
Q2: 用Java模拟两个小球的弹性碰撞
可以java弹球代码了解一下物力引擎。。设计物理的各个指标。然后根据物理公式进行计算就可以java弹球代码了。。
比如弹性有损耗java弹球代码,方向相反java弹球代码,速度乘个系数。。加上加速度 java弹球代码,根据时间和公式计算球的位置。。大概就是这个思路了。。
Q3: java弹球游戏
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CopyOfBallCrash implements Runnable {
public static void main(final String[] args) {
new Thread(new CopyOfBallCrash()).start();
}
private final int width = 400;
private final int height = 700;
private int mouse_X, mouse_Y;
private final BufferedImage offscreen = new BufferedImage(width, height,
BufferedImage.TYPE_4BYTE_ABGR);
private final JPanel panel = new JPanel();
private final Shape ball = new Shape(100, 100, 1, 1, 20);
private final Shape rect = new Shape(0, 100, 20);
public CopyOfBallCrash() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setPreferredSize(new Dimension(width, height));
ball.setBounds(width, height);
rect.setBounds(width, height);
frame.setContentPane(panel);
panel.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(final MouseEvent e) {}
@Override
public void mouseMoved(final MouseEvent e) {
mouse_X = e.getX();
mouse_Y = e.getY();
}
});
frame.pack();
frame.setVisible(true);
}
public void paint(final Graphics g) {
final Graphics2D g2d = offscreen.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.blue);
rect.drawRect(g2d, mouse_X);
g2d.setColor(Color.red);
ball.drawOval(g2d, rect);
if (Shape.isLose) g2d.drawString("java弹球代码你输java弹球代码了!!!", 100, 300);
g2d.dispose();
g.drawImage(offscreen, 0, 0, null);
}
@Override
public void run() {
while (true)
paint(panel.getGraphics());
}
}
class Shape {
public int width, height;
public int x, y, vx, vy, r, w, h;
public static boolean isLose;
public Shape(final int x, final int y, final int vx, final int vy, final int r) {
super();
this.x = x;
this.y = y;
this.vx = vx;
this.vy = vy;
this.r = r;
}
public Shape(final int x, final int w, final int h) {
super();
this.x = x;
this.w = w;
this.h = h;
}
public final void setBounds(final int width, final int height) {
this.width = width;
this.height = height;
}
public final void drawOval(final Graphics2D g2d, final Shape shape) {
if (y + h = height) {
isLose = true;
return;
}
if (x + vx = 0 || x + vx + w = width) vx = -vx;
if (y + vy = 0) vy = -vy;
if (isCrashOutside(shape.x, shape.y, shape.w, shape.h) y + w = shape.y)
vy = -vy;
x += vx;
y += vy;
g2d.fillOval(x, y, r, r);
}
public final void drawRect(final Graphics2D g2d, final int mouseX) {
y = height - h;
if (x + w width x mouseX) x++;
if (x 0 x mouseX) x--;
g2d.fillRect(x, y, w, h);
}
public final boolean isCrashOutside(final int x, final int y, final int w,
final int h) {
return (this.x x ? this.x = w + x : x = r + this.x)
(this.y y ? this.y = h + y : y = r + this.y);
}
}
Q4: 谁帮我一下修改一个简单的java程序?关于多线程的弹球程序。主要问题:编译运行以后就是不能出现小球.
此种情况不应该使用多线程,要是开发像雷电一样射击类的游戏,岂不是线程多如牛毛?
关于java弹球代码和java弹球游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







