『壹』 如何用java編寫一個類似於寶石迷陣,天天愛消除這類的三消類游戲。
你先准備三顆不同顏色的星星,三顆星星可用Java繪圖技術繪出!並將三顆星星存放在不同的數組中,或者最好用向量!然後面板上匯出三顆星星,坐標相鄰,在同一列上?匯出以後,在改進!比如點擊某個按鈕可以獲得一次隨機數,並將隨機數作為坐標傳給三顆星星,使三顆星星的縱坐標改變,從而改變三顆星星的樹值方向的排序!同時運用線程改變三顆星星的縱坐標,使其下落!下落後,判斷周邊的星星顏色是否相同!且坐標在一行或者一列上是否相同!相同的話,將這三顆星星從其向量屬於中清出!不相同的話!就擺在原地!最後補充下,在上面的下落過程中你還需要左右移動星星,你需要,在按下左鍵時使其橫坐標減一,按下右鍵時,使其橫坐標加一,使其左右移動!同時還要注意,只要改變坐標都需要重繪一次星星
『貳』 怎麼用java寫消滅星星大概思路
消滅星星是二消類游戲,只要有超過兩個以上的星星能連在一起,就能消除。每個星星添加點及組件方便點擊。
判斷,生成星星的同時判斷其附近是否有相同顏色的星星,分為上、下、左、右四種情況,那麼就得使用枚舉Enum了,注意,每個星星都得這么判斷,判斷上、下、左、右是否有相同顏色的星星,當有一個星星連接很多相同顏色的星星就可以消除了,這樣當有大面積相同顏色的星星連在一起的時候就可以大面積消除了,設置int類型的相同顏色的星星個數Count,每有一個星星相連,Count=Count+1,當超過兩個就可以消除了,相連可以使用bool類型的isLink
消除,消除的邏輯就很好說了,就是當相同顏色的星星超過兩個的時候,就可以消除了,也就是當isLink=true的時候,消除的星星個數=消除的的星星*Count,並且消除星星的位置會為null。
消除後生成,當消除星星後需要有星星來填補空缺的位置,先找到星星的位置,並確定游戲界面最頂部的位置范圍,也就是最頂部的邊界,一般是(x,y,z)到(x,y,-z),判斷星星所在位置是否為null,如果位置為null,便會從游戲界面的最頂部生成星星到null位置,這個可以用動畫來產生星星從最頂部運動到null位置的效果,比如iTween的MoveTo等等。
增分,設置int類型的總分數TotalScore,以及int類型的每消除一個星星的分數Score,計算總分TotalScore=Score*Count。
『叄』 如何用JAVA輸出如下的星星
按照你的要求編寫的Java程序如下:
importjava.util.Scanner;
publicclassTest8{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("請輸入一個正奇數:");
finalintN=sc.nextInt();
for(intm=1;m<=2*N;m+=2){
for(inti=1;i<=2*N;i+=2){
for(intk=1;k<=Math.abs(N-m);k+=2){
for(intj=1;j<=Math.abs(N-i);j+=2){
System.out.print("");
}
for(intj=1;j<=N-Math.abs(i-N);j++){
System.out.print("");
}
for(intj=1;j<=Math.abs(N-i);j+=2){
System.out.print("");
}
}
for(intk=1;k<=N-Math.abs(m-N);k++){
for(intj=1;j<=Math.abs(N-i);j+=2){
System.out.print("");
}
for(intj=1;j<=N-Math.abs(i-N);j++){
System.out.print("*");
}
for(intj=1;j<=Math.abs(N-i);j+=2){
System.out.print("");
}
}
System.out.println();
}
}
}
}
運行結果:
請輸入一個正奇數:
3
*
***
*
* * *
*********
* * *
*
***
*
『肆』 java生日快樂煙花代碼
2022年跨年煙花代碼可復制煙花代碼如下:
packagelove;
importjava.applet.Applet;
importjava.awt.Color;
importjava.awt.Graphics;
importjava.net.URL;
importjava.util.Random;
煙花
@authorenjoy
@SuppressWarnings("serial")
publicintspeed,variability,Max_Number,Max_Energy,Max_Patch,
Max_Length,G;
publicStringsound;
privateintwidth,height;
privateThreadthread=null;
privateBeaClassDemobcd[];
publicvoidinit()???????????
inti;
this.setSize(1900,900);
width=getSize().width-1;
height=getSize().height-1;
speed=1;???????????????????????//煙花綻放的速度
variability=10;
Max_Number=980;???????????????????//可發出煙花的最大數目
Max_Energy=width+50;
Max_Patch=90;???????????????????//最大的斑點數
Max_Length=90;???????????????????//斑點的最大距離
G=150;???????????????????????????//向地面彎曲的力度
bcd=newBeaClassDemo[Max_Number];
for(i=0;iMax_Number;i++)
bcd[i]=newBeaClassDemo(width,height,G);
}
publicvoidstart(){
if(thread==null){
thread=newThread(this);
thread.start();
}
}
@SuppressWarnings("deprecation")
publicvoidstop(){
if(thread!=null){
thread.stop();
thread=null;
}
}
@SuppressWarnings({"unused","static-access"})
publicvoidrun(){
inti;
intE=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4+1;
intP=(int)(Math.random()*Max_Patch*3/4)???//煙花的斑點數
+Max_Patch/4+1;
intL=(int)(Math.random()*Max_Length*3/4)???//煙花可發射出的距離
+Max_Length/4+1;
longS=(long)(Math.random()*10000);
booleansleep;
Graphicsg=getGraphics();
URLu=null;
while(true){
try{
thread.sleep(1000/speed);
catch(InterruptedExceptionx){
sleep=true;
for(i=0;iMax_Number;i++)
sleep=sleepbcd[i].sleep;
if(sleepMath.random()*100variability){
E=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4
+1;
P=(int)(Math.random()*Max_Patch*3/4)+Max_Patch/4
+1;
L=(int)(Math.random()*Max_Length*3/4)+Max_Length/4
+1;
S=(long)(Math.random()*10000);
for(i=0;iMax_Number;i++){
if(bcd[i].sleepMath.random()*Max_Number*L1)
bcd[i].init(E,P,L,S);
bcd[i].start();
bcd[i].show(g);
publicvoidpaint(Graphicsg)?????????
g.setColor(Color.black);
g.fillRect(0,0,width+1,height+1);
classBeaClassDemo
publicbooleansleep=true;
privateintenergy,patch,length,width,height,G,Xx,Xy,Ex[],Ey[],x,
y,Red,Blue,Green,t;
privateRandomrandom;
publicBeaClassDemo(inta,intb,intg)????
width=a;
height=b;
G=g;
publicvoidinit(inte,intp,intl,longseed)?
inti;
energy=e;
patch=p;
length=l;
//創建一個帶種子的隨機數生成器
random=newRandom(seed);
Ex=newint[patch];
Ey=newint[patch];
Red=(int)(random.nextDouble()*128)+128;
Blue=(int)(random.nextDouble()*128)+128;
Green=(int)(random.nextDouble()*128)+128;
Xx=(int)(Math.random()*width/2)+width/4;
Xy=(int)(Math.random()*height/2)+height/4;
for(i=0;ipatch;i++){
Ex[i]=(int)(Math.random()*energy)-energy/2;
Ey[i]=(int)(Math.random()*energy*7/8)-energy/8;
publicvoidstart
t=0;
sleep=false;
publicvoidshow(Graphicsg)???
if(!sleep)??????????????????
if(tlength)
inti,c;
doubles;
Colorcolor;
c=(int)(random.nextDouble()*64)-32+Red;
if(c=0c256)
Red=c;
c=(int)(random.nextDouble()*64)-32+Blue;
if(c=0c256)
Blue=c;
c=(int)(random.nextDouble()*64)-32+Green;
if(c=0c256)
Green=c;
color=newColor(Red,Blue,Green);
for(i=0;ipatch;i++)
s=(double)t/100;
x=(int)(Ex[i]*s);
y=(int)(Ey[i]*s-G*s*s);
g.setColor(color);
g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);
if(t=length/2)
intj;
for(j=0;j2;j++)
s=(double)((t-length/2)*2+j)/100;
x=(int)(Ex[i]*s);
y=(int)(Ey[i]*s-G*s*s);
g.setColor(Color.black);
g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);
常用的編程語言。
編程語言一:C語言
C語言是世界上最流行、使用最廣泛的高級程序設計語言之一。在操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它高級語言,許多大型應用軟體都是用C語言編寫的。
編程語言二:java
Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,是由SunMicrosystems公司於1995年5月推出的Java程序設計語言和Java平台(即JavaSE,JavaEE,JavaME)的總稱。
編程語言三:c++
C++這個詞在中國大陸的程序員圈子中通常被讀做「C加加」,而西方的程序員通常讀做「Cplusplus","CPP」。它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的、支持多重編程範式的通用程序設計語言。
網路上java煙花代碼改成按類編寫,改變其煙花消失方式,實現滑鼠一點實現多個煙花綻放
喔哇,
都是啥子年代了,
還食古不化,
在觸摸屏幕用手指劃動而產生燃放煙花的虛擬圖像效果,
早就被時代徹底底拋棄了!!
現在都是在空中一劃,根據手勢,根據手勢的空間運動,
立即就是實際來真格的,
真實、震撼、空間大爆炸、場面駭人、驚天動地。
無接觸,
摒棄虛擬的虛假玩意兒。
你吹一口氣,
燃放裝置就噴出一股火焰。
機械加工能力和基礎強勁的,
產生1米邊長見方立體焰火造型,
與產生100米見方焰火造型的設備是通用的。
你與情侶自拍「刷臉」就立即產生肖像燃放造型,
其詳細的工程技術細節,
早就有中英文對照的文本,
照著去做就可以了,
無需操作機床加工的人員,
去「進一步研究思考」、去開展「創造性的工作」。
java煙花程序看不懂,求解釋!import?java.awt.*;
import?java.applet.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?Fireworks?extends?Applet?implements?MouseListener,?Runnable?{
int?x,?y;//記錄滑鼠點擊的坐標
int?top,?point;//好像沒用到
public?void?init()?{
x?=?0;
y?=?0;
setBackground(Color.black);//?設置背景色為黑色
addMouseListener(this);//添加滑鼠監聽
}
public?void?paint(Graphics?g)?{
}
public?static?void?main(String?args[])?{
Fireworks?applet?=?new?Fireworks();
JFrame?frame?=?new?JFrame("TextAreaNew");
frame.addWindowListener(new?WindowAdapter()?{
public?void?windowClosing(WindowEvent?e)?{//右上角的叉
System.exit(0);
}
});
frame.add(applet,?BorderLayout.CENTER);
frame.setSize(800,?400);//程序的框框大小
applet.init();
applet.start();
frame.setVisible(true);//
}
public?void?run()?{
//?變數初始化
Graphics?g1;
g1?=?getGraphics();//這是畫筆,得到一個畫筆
int?y_move,?y_click,?x_click;
int?v;//用於計算等待的時間
x_click?=?x;
y_click?=?y;//把點擊的坐標保存下來,因為其它線程會去改這兩個坐標。
y_move?=?400;//用來計算變動的那個點,現在是屏幕的最大高度
v?=?3;
int?r,?g,?b;
while?(y_move??y_click)//如果點擊的位置小於最大高度。
{
g1.setColor(Color.black);//畫筆設成黑色
g1.fillOval(x_click,?y_move,?5,?5);//畫圓,圓點在點擊的X軸,程序界面的最高點,長為5,寬為5
y_move?-=?5;//最高點-5
r?=?(((int)?Math.round(Math.random()?*?4321))?%?200)?+?55;
g?=?(((int)?Math.round(Math.random()?*?4321))?%?200)?+?55;
b?=?(((int)?Math.round(Math.random()?*?4321))?%?200)?+?55;//rgb是光的三原色,這個就是煙花產生的顏色,這里定義成隨機的,但在一個范圍里
g1.setColor(new?Color(r,?g,?b));//把畫筆改成那個顏色
g1.fillOval(x_click,?y_move,?5,?5);//畫一個這樣的圓
for?(int?j?=?0;?j?=?10;?j++)?{
if?(r??55)
r?-=?20;
if?(g??55)
g?-=?20;
if?(b??55)
b?-=?20;
g1.setColor(new?Color(r,?g,?b));
g1.fillOval(x_click,?y_move?+?j?*?5,?5,?5);//這一段都是改變顏色,然後畫圓的
}
g1.setColor(Color.black);
g1.fillOval(x_click,?y_move?+?5?*?10,?5,?5);//把上一次畫的彩色圓,用黑色畫一遍,就能讓它消失在背景里
try?{
Thread.currentThread().sleep(v++);//讓程序等一下,讓你看到效果,不然畫完的東西一下就不見了,你看不清。
}?catch?(InterruptedException?e)?{
}
}//上面這段代碼是煙花的升上去的那一串東西的效果
for?(int?j?=?12;?j?=?0;?j--)?{
g1.setColor(Color.black);
g1.fillOval(x_click,?y_move?+?(j?*?5),?5,?5);
try?{
Thread.currentThread().sleep((v++)?/?3);
}?catch?(InterruptedException?e)?{
}
}//讓最後的那串東西的點消失
y_move?=?400;
g1.setColor(Color.black);
while?(y_move??y_click)?{
g1.fillOval(x_click?-?2,?y_move,?9,?5);
y_move?-=?5;
}//這段不太清楚是干什麼的,我把它去掉,看不出效果的變化
v?=?15;
for?(int?i?=?0;?i?=?25;?i++)?{
r?=?(((int)?Math.round(Math.random()?*?4321))?%?200)?+?55;
g?=?(((int)?Math.round(Math.random()?*?4321))?%?200)?+?55;
b?=?(((int)?Math.round(Math.random()?*?4321))?%?200)?+?55;
g1.setColor(new?Color(r,?g,?b));
g1.drawOval(x_click?-?3?*?i,?y_click?-?3?*?i,?6?*?i,?6?*?i);
if?(i??23)?{
g1.drawOval(x_click?-?3?*?(i?+?1),?y_click?-?3?*?(i?+?1),
6?*?(i?+?1),?6?*?(i?+?1));
g1.drawOval(x_click?-?3?*?(i?+?2),?y_click?-?3?*?(i?+?2),
6?*?(i?+?2),?6?*?(i?+?2));
}//上面這段是畫爆炸的效果
try?{
Thread.currentThread().sleep(v++);//停一下,看效果
}?catch?(InterruptedException?e)?{
}
g1.setColor(Color.black);
g1.drawOval(x_click?-?3?*?i,?y_click?-?3?*?i,?6?*?i,?6?*?i);//然後畫黑圈,相當於讓彩圈消失。
}
}
public?void?mousePressed(MouseEvent?e)?{//點擊從這里開始~~~~~~~~~~~~~~
x?=?e.getX();
y?=?e.getY();//得到滑鼠點擊的坐標
Thread?one?=?new?Thread(this);//新建一個線程
one.start();//啟動這個線程,到上面的run方法
one?=?null;//把這個線程置為空,讓它執行完以後就釋放
}
如果你想一下自己寫要怎樣寫這個程序,就很容易理解這個程序了。
一直從下向上畫圓,然後把下面的圓擦掉,就能得到一個向上升的煙花效果,
爆炸效果就是先畫小圓再畫大圓,然後擦掉小圓,再擦掉大圓。
微信上面輸入代碼出現一直放煙花首先在手機中打開微信,點擊菜單欄中的「通訊錄」,找到准備聊天的好友。
2
/6
在與好友的聊天界面輸入關鍵詞「么么噠」,即會出現滿屏的親吻表情。
3
/6
在聊天界面輸入「想你了」關鍵詞,即會出現滿屏星星煙花的表情。
拼多多
根據文章內容為您推薦
廣告
各種鋼絲球批發
¥2元
查看
200個鋼絲球
¥130元
查看
鋼絲球20個
¥9.99元
查看
鋼絲球超級好用的鋼絲球
¥1.2元
查看
12包葵花鋼絲球180
¥190元
查看
4
/6
在聊天界面輸入「生日快樂」或者「happybirthday」關鍵詞,即會出現滿屏蛋糕的表情。
5
/6
節日的特定日期,如「新年快樂」,「情人節快樂」,「七夕快樂」,「父親節」等日期當天輸入對應的關鍵詞,也會出現滿屏煙花效果。
6
/6
總結
1.首先在手機中打開微信,點擊菜單欄中的「通訊錄」,找到准備聊天的好友。
2.在與好友的聊天界面輸入關鍵詞「么么噠」,即會出現滿屏的親吻表情。
3.在聊天界面輸入「想你了」關鍵詞,即會出現滿屏星星煙花的表情。
4.在聊天界面輸入「生日快樂」或者「happybirthday」關鍵詞,即會出現滿屏蛋糕的表情。
5.節日的特定日期,如「新年快樂」,「情人節快樂」,「七夕快樂」,「父親節」等日期當天輸入對應的關鍵詞,也會出現滿屏煙花效果。
『伍』 用Java 做一個星星圖案
這余氏段代碼你參考一下。可以運行的package common;public class test {
public static void main(String[] args){
Pentagram pen = new Pentagram(10,0,'','★');
Draw.printCanvas(pen.getPentagram());
}
}// Pentagram.java 五角星類
class Pentagram {
private final char FILL_CHAR; // 填充字元
private final char SPACE_CHAR; // 空檔字元
private final int R; // 五角星的外接圓半徑
private final float ROTATION; // 五角星逆時針旋轉角度
private final int X; // 用於生成畫圖數組
private final int Y; // 用於生成畫圖數組 /**
* 構造一個Pentagram對象
*
* @param radius
* 五角星的半徑
* @param rotation
* 五角星的逆時針旋轉度數
* @param spaceChar
* 畫布上空白處填充字元
* @param fillChar
* 畫布上線條部分填充字元
*/
public Pentagram(int radius, float rotation, char spaceChar, char fillChar) {
this.R = radius;
this.ROTATION = rotation;
this.FILL_CHAR = fillChar;
this.SPACE_CHAR = spaceChar;
this.X = 2 * R + 1;
this.Y = 2 * R + 1;
} public char[][] getPentagram() {
char[][] canvas = initCanvas();
Draw draw = new Draw(FILL_CHAR);
//余悄 設五角星的最右邊的一個點為 A,逆時針選取點 B~E
// 通過圓的極坐標公式可以得出:
// 得出以下各點的坐標
// A 點坐標(0.951R, 0.309R)
// B 點坐標(0, R)
// C 點坐標(-0.951R, 0.309R)
// D 點坐標(-0.588R, -0.809R)
// E 點坐標(0.588R, -0.809R)
// 畫線段CA
draw.drawLine(mcos(162) * R, msin(162) * R, mcos(18) * R, msin(18) * R,
canvas);
// 畫線段DA
draw.drawLine(mcos(234) * R, msin(234) * R, mcos(18) * R, msin(18) * R,
canvas);
// 畫線段CE
draw.drawLine(mcos(162) * R, msin(162) * R, mcos(306) * R, msin(306)
* R, canvas);
// 畫線段DB
draw.drawLine(mcos(234) * R, msin(234) * R, mcos(90) * R, msin(90) * R,
canvas);
// 畫線段BE
draw.drawLine(mcos(90) * R, msin(90) * R, mcos(306) * R, msin(306) * R,
canvas);
return canvas;
} // 在方形的字元數組中指定兩點畫線條
// 對圖豎毀渣形數組進行初始化,填充空格
private char[][] initCanvas() {
char[][] canvas = new char[Y][X];
for (int i = 0; i < Y; i++) {
for (int j = 0; j < X; j++) {
canvas[i][j] = SPACE_CHAR;
}
}
return canvas;
} // 根據角度求正弦值,保留兩位小數
private double msin(float a) {
return ((int) (Math.sin(Math.toRadians(a + ROTATION)) * 100)) / 100.0;
} // 根據角度求餘弦值,保留兩位小數
private double mcos(float a) {
return ((int) (Math.cos(Math.toRadians(a + ROTATION)) * 100)) / 100.0;
}
}// Draw.java 畫圖工具類
class Draw {
private char fillChar; public Draw(char fillChar) {
this.fillChar = fillChar;
} /**
* 根據兩個點畫線在二維字元數組上畫線
*
* @param x1
* @param y1
* @param x2
* @param y2
* @param canvas
*/
public void drawLine(double x1, double y1, double x2, double y2,
char[][] canvas) {
int radius = (canvas.length - 1) / 2;
// 從 x 方向進行填充
if (x1 > x2) {
double t = x1;
x1 = x2;
x2 = t;
t = y1;
y1 = y2;
y2 = t;
}
// 獲得直線方程的兩個系數
double a = (y1 - y2) / (x1 - x2);
double b = y1 - a * x1;
// 根據 x 方向的值求出 y 值,並填充圖形
for (int i = (int) Math.round(x1); i <= (int) Math.round(x2); i++) {
// 根據直線方程 y = ax + b,求 y
int y = (int) Math.round(a * i + b);
// 因為 y 和 i 算出來的結果有可能是負數,
// 為了採用數組來表示坐標,做了以下變換
// c[R][R] 即為坐標原點
// c[R][0..R] 為 x 方向的負半軸
// c[R][R+1..2*R] 為 x 方向的正半軸
// c[0..R][R] 為 y 方向的正半軸
// c[R+1..2*R][R] 為 y 方向的負半軸
int yy = radius - y;
int xx = radius + i;
yy = yy < 0 ? 0 : yy;
yy = yy > 2 * radius ? 2 * radius : yy;
xx = xx < 0 ? 0 : xx;
xx = xx > 2 * radius ? 2 * radius : xx;
canvas[yy][xx] = fillChar;
}
// 從 y 方向進行填充,便於減少間距問題產生的字元空檔
if (y1 > y2) {
double t = x1;
x1 = x2;
x2 = t;
t = y1;
y1 = y2;
y2 = t;
}
// 根據 y 方向的值求出 x 值,並填充圖形
for (int i = (int) Math.round(y1); i <= (int) Math.round(y2); i++) {
// 根據 x = (y - b) / a,求 x
int y = (int) Math.round((i - b) / a);
int yy = radius - i;
int xx = radius + y;
yy = yy < 0 ? 0 : yy;
yy = yy > 2 * radius ? 2 * radius : yy;
xx = xx < 0 ? 0 : xx;
xx = xx > 2 * radius ? 2 * radius : xx;
canvas[yy][xx] = fillChar;
}
} /**
* 將畫完圖之後的畫布輸出到控制台上
*
* @param canvas
*/
public static void printCanvas(char[][] canvas){
for (int i = 0; i < canvas.length; i++) {
for (int j = 0; j < canvas[i].length; j++) {
System.out.print(canvas[i][j]);
}
System.out.println();
}
}
}