『壹』 如何用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();
}
}
}