成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java寫出拋物線代碼 java實現(xiàn)平拋

關(guān)于java中模擬拋物線軌跡的問題

看了這套題目感覺很有興趣,就花了一個中午親手給你寫了一個類似的例子,相信可以幫助你對這個游戲有很好的理解,從右向左那個是僵尸,點一下鼠標(biāo)就出現(xiàn)植物,我只是起到一個拋磚引玉的作用。代碼如下(絕對可以用的代碼):

創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報價,主機托管價格性價比高,為金融證券行業(yè)服務(wù)器主機托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。

import?java.awt.Dimension;

import?java.awt.Graphics;

import?java.awt.event.MouseEvent;

import?java.util.Vector;

import?javax.swing.JFrame;

import?javax.swing.event.MouseInputAdapter;

public?class?PlantsAndZombies?extends?JFrame?{

private?static?final?long?serialVersionUID?=?1L;

public?static?final?int?screenWidth=800;

public?static?final?int?screenHeight=600;

Printer?printer;

Zombies?zombies=new?Zombies();

Thread?T_Zombies;

Bullet?bullet=new?Bullet();

Thread?T_Bullet;

public?PlantsAndZombies(){

this.setSize(new?Dimension(screenWidth,screenHeight));

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

this.addMouseListener(new?Shoot(this));

this.setVisible(true);

printer=new?Printer(?this.getGraphics());

printer.Add(zombies);

printer.Add(bullet);

T_Zombies=new?Thread(zombies);

T_Zombies.start();

T_Bullet=new?Thread(bullet);

T_Bullet.start();

}

public?void?Shoot(){

bullet.getTarget(zombies);

}

public?static?void?main(String[]?args){

PlantsAndZombies?game=new?PlantsAndZombies();

}

public?void?run()?{

while(true){

}

}

}

interface?Drawable{

void?drawMe(Graphics?g);

}

class?Zombies?implements?Drawable,Runnable{

public?boolean?isLive=true;

public?int?x=PlantsAndZombies.screenWidth;

public?int?y=500;

public?void?run()?{

while(true){

if(x10){

x-=20;

}else?x=PlantsAndZombies.screenWidth;

try?{

Thread.sleep(500);

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

}

}

public?void?drawMe(Graphics?g){

g.drawRect(x,y,20,50);

}

}

class?Bullet?implements?Drawable,Runnable{

private?int?x=0;

private?int?y=500;

private?Zombies?_z;

private?float?a,b,c;

private?float?step;

public?void?getTarget(Zombies?z){

_z=z;

//?用三點確定一個拋物線的方法,計算彈道

int?x1=0;

int?y1=500;

int?x2=(z.x-6*20)/2;

int?y2=300;??//?拋物線高度200個像素

int?x3=z.x-6*20;?//?假設(shè)擊中僵尸用3秒鐘,在這3秒鐘內(nèi)僵尸向前移動了6*20個像素

int?y3=500;

a=(float)((y2-y1)*(x3-x2)-(y3-y2)*(x2-x1))/(float)((x2*x2-x1*x1)*(x3-x2)-(x3*x3-x2*x2)*(x2-x1));

b=(float)((y2-y1)-a*(x2*x2-x1*x1))/(float)(x2-x1);

c=y1-a*x1*x1-b*x1;

step=(float)(x3-x1)/(float)(3*20);

}

public?void?run()?{

while(true){

try?{

x+=step;

y=(int)(a*x*x+b*x+c);

if(y500){

_z.isLive=false;

}

Thread.sleep(50);

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

}

}

public?void?drawMe(Graphics?g)?{

g.drawRect(x,y,20,20);

}

}

class?Printer?extends?Thread{

private?VectorDrawable?v=new?VectorDrawable();

private?Graphics?_g;

public?Printer(Graphics?g){

_g=g;

this.start();

}

public?void?Add(Drawable?o){

v.add(o);

}

public?void?run(){

while(true){

_g.clearRect(0,0,PlantsAndZombies.screenWidth,PlantsAndZombies.screenHeight);

for(Drawable?o:v){

o.drawMe(_g);

}

try?{

Thread.sleep(500);

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

}

}

}

class?Shoot?extends?MouseInputAdapter{

private?PlantsAndZombies?_adaptee;

public?Shoot(PlantsAndZombies?adaptee){

_adaptee=adaptee;

}

public?void?mouseClicked(MouseEvent?e)?{

_adaptee.Shoot();

}

}

java一個小圓球拋物線運動,請問拋物線的運動怎么實現(xiàn)?

1、首先描一個坐標(biāo)軸

2、確定方程式

3、打點

4、連線

5、取出打點的坐標(biāo),按照順序依次變更顏色(做出運動效果)

6、簡單的一元二次方程舉例【步驟5留給題主思考】

public class View extends JFrame {

public View() {

JFrame frame = new JFrame("Equation");

frame.getContentPane().setLayout(new BorderLayout());

JPanel panel1 = new JPanel();

panel1.setPreferredSize(new Dimension(50, 50));

JLabel labelA = new JLabel();

labelA.setText("a");

JTextField textA = new JTextField("0",3);

JLabel labelB = new JLabel();

labelB.setText("b");

JTextField textB = new JTextField("0",3);

JLabel labelC = new JLabel();

labelC.setText("c");

JTextField textC = new JTextField("0",3);

JButton draw = new JButton();

draw.setText("Draw");

draw.addActionListener( new ActionListener(){

@Override

public void actionPerformed(ActionEvent e){

Controller.a = Double.parseDouble(textA.getText());

Controller.b = Double.parseDouble(textB.getText());

Controller.c = Double.parseDouble(textC.getText());

repaint();

frame.pack();

frame.setSize(420,490);

}

});

panel1.add(labelA);

panel1.add(textA);

panel1.add(labelB);

panel1.add(textB);

panel1.add(labelC);

panel1.add(textC);

panel1.add(draw);

JPanel panel2 = new JPanel(){

public void paint(Graphics g){

super.paint(g);

Controller.grid(g);

Controller.Graphic1(g);

}

};

panel2.setBackground(Color.WHITE);

frame.getContentPane().add(panel1, BorderLayout.PAGE_START);

frame.getContentPane().add(panel2, BorderLayout.CENTER);

frame.setVisible(true);

frame.setSize(420,490);

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

View frame = new View();

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

}

public class Controller {

static double a=2, b=1, c=0;

public static void grid (Graphics g){

g.setColor(Color.blue);

g.drawLine(200,0,200,400);

g.drawLine(0,200,400,200);

for (int x=0; x=400; x= x +40){

g.drawLine(x,195,x,205);

}

for (int y=0; y=400; y=y+40){

g.drawLine(195,y,205,y);

}

}

public static void Graphic1(Graphics g) {

g.setColor(Color.red);

for (double x=-100;x=100;x = x+0.1){

double y = a * x * x + b * x + c;

int X = (int)Math.round(200 + x*20);

int Y = (int)Math.round(200 - y*20);

g.fillOval(X-2,Y-2,4,4);

}

}

}

eclipse中Java在控制臺做像拋物線一樣輸出*

……首先,這個明顯不是拋物線,而是sin/cos曲線

我習(xí)慣用輕量組件

取兩個數(shù),x1和y1,x從最左邊到最右邊循環(huán)賦值,y1=f(x1)

再取兩個數(shù),x2和y2,x2就是下一個x1的值,y2=f(x2)

其中f(x)是一個函數(shù),可以是sin(x),也可以是x的平方。

創(chuàng)建一個JPanel,但是別直接定義JPanel類,你需要這樣創(chuàng)建:

ClassName variable = new ClassName(parameters);

其中這個ClassName,需要你繼承JPanel,并覆蓋里邊的paintComponent(Graphics g)方法,不這樣創(chuàng)建是畫不出來的。

接下來就開始畫,g.drawLine(x1, y1, x2, y2),精度可能不高,但是效果是如圖的。

哎呀我靠逗比了,答完了才看見是在控制臺輸出的

前面也不用刪,但是把

g.drawLine(x1, y1, x2, y2)

換成

g.drawRect(x1, y1, 1, 1)

比較好,x2和y2就扔了吧。

要在控制臺輸出,先定義一下每行長度和寬度,也就是橫坐標(biāo)和縱坐標(biāo)。

越多越精細,但是太多了也不行,一行打不出來,會很……

然后用下面的兩個句子:

BufferedImage b=new BufferedImage(剛才那個面板的長度、寬度、1是三個需要傳遞的參數(shù));

某個面板.paint(b.createGraphics());

這樣把面板上顯示的內(nèi)容輸入在一個名字叫b的圖像里

這時候就可以用兩個循環(huán)嵌套,來挨個檢查b上的每一個點的顏色,用這個句子:

int color=b.getRGB(x, y);其中x和y分別是橫縱坐標(biāo)。color就是一個16進制的數(shù)字

轉(zhuǎn)成紅綠藍三色,就用下面這個:

int r=(color0xff0000)16, g=(color0xff00)8, b=color0xff;

(重名什么的去死吧?。?/p>

然后我們一般都是用黑筆來畫函數(shù)圖像對吧,就用if語句判斷紅綠藍是否都為0,如果是則系統(tǒng)打印一個*號,如果不是則系統(tǒng)打印一個空格。

最后再加一行,當(dāng)橫坐標(biāo)超出時,系統(tǒng)打印一個轉(zhuǎn)行符。

網(wǎng)站題目:java寫出拋物線代碼 java實現(xiàn)平拋
新聞來源:http://jinyejixie.com/article32/dosgcsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、搜索引擎優(yōu)化、微信公眾號、品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
山西省| 抚松县| 石棉县| 宜阳县| 邯郸县| 新泰市| 股票| 灵宝市| 临清市| 澄迈县| 黄梅县| 武山县| 萨嘎县| 从化市| 牙克石市| 邹城市| 临清市| 牙克石市| 石景山区| 瓮安县| 额尔古纳市| 丰县| 论坛| 佛坪县| 岫岩| 绵竹市| 城固县| 芜湖县| 青田县| 宁远县| 云霄县| 甘洛县| 湘潭市| 平远县| 平原县| 东阿县| 灵丘县| 青冈县| 大荔县| 陆良县| 乐清市|