黑客代码雨制作
_safdsfdeaf_ · · 算法·理论
#include<bits/stdc++.h>
#include<graghics.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;
#define STR_SIZE 20
#define STR_NUM 128
#define STR_WIDTH 15
#define WIDTH 1024
#define HEIGHT 640
struct MyStruct{
char str[STR_SIZE];
int x,y,speed;
}rain[STR_NUM];
struct Star{
int x;
int y;
int width;
int vx;
int vy;
}star[5];
char str[STR_SIZE];
char CreateCh(){
char temp=0;
int flag=rand()%3;
if(flag==0)
temp=rand()%26+'A';
else if(flag==1)
temp=rand()%26+'a';
else
temp=rand()%26+'0';
return temp;
}
void GameInit(){
initgraph(WIDTH,WEIGHT);
mciSendString("open./克罗地亚狂想曲.mp3 alias BGM",0,0,0);
mciSendString("play BGM repeat",0,0,0)
srand((unsigned)time(NULL));
for(int i=0;i<STR_NUM;i++){
for(int k=0;k<STR_SIZE;k++){
rain[i].str[k]=CreateCh();
}
}
for(int i=0;i<STR_NUM;i++){
rain[i].x=i*STR_WIDTH;
rain[i].y=rand()%WEIGHT;
rain[i].speed=(rand()%6)+1;
}
for(int i=0;i<5;i++){
star[i].x=rand()%WIDTH;
star[i].y=rand()%HEIGHT;
star[i].width=rand()%21+20;
star[i].vx=rand()%rand()%4+1;
star[i].vy=rand()%rand()%4+1;
}
}
void GameDraw(){
for(int i=0;i<STR_NUM;i++){
for(int k=0;k<STR_SIZE;k++){
setbkmode(TRANSPARENT);
settextcolor(RGB(0,255-13*k,0))
outtextxy(rain[i].x,rain.y,rain[].str[k])
}
}
}
void FiverStar(star temp);
void StarDraw(){
setline(GREEN);
for(int i=0;i<5;i++){
FiverStar(star[i]);
star[i].x+=star[i].vx;
star[i].y+=star[i].vy;
if(star[i].x>WIDTH||star[i].x<=0){
star[i].vx=-star[i].vx;
}
else if(star[i].y+star[i].width>WEIGHT||star[i].y<0){
star[i].vy=-star[i].vy
}
}
}
void ChangeCh(){
for(int i=0;i<STR_NUM;i++){
rain[i].str[rand()%STR_SIZE]=CreateCh();
}
}
void RainMove(){
for(int i=0;i<STR_NUM;i++){
rain[i].y+=rain[i].speed;
if(rain[i].y-STR_WIDEH*STR_SIZE>HEIGHT){
rain[i].y=0;
}
}
}
int main()
{
//srand((unsigned)time(NULL));
GameInit();
BeginBatchDraw();
while(1){
cleardevice();
GameDraw();
FLushBatchDraw();
ChangeCh();
RainMove();
}
EndBatchDraw();
getchar();
return 0;
}
void FiverStar(star temp,int width){
POINT star[5]={
{temp.x,temp.y+temp.width/3},
{temp.x+temp.width/3,temp.y},
{temp.x+temp.width,yemp.y+temp.width/3},
{temp.x+temp.width,temp.y+temp.width},
{temp.x,temp.y+temp.width}
};
line(star[0].x,star[0].y,star[2].x,star[2].y);
line(star[2].x,star[2].y,star[4].x,star[4].y);
line(star[4].x,star[4].y,star[1].x,star[1].y);
line(star[1].x,star[1].y,star[3].x,star[3].y);
line(star[3].x,star[3].y,star[0].x,star[0].y);
}
视频版链接https://www.bilibili.com/video/BV19v411C7TK/?spm_id_from=333.337.search-card.all.click&vd_source=8e8c610e578fc3eb5301c7710ac61b93
这些都是_safdsfdeaf_亲手抄下来的,来之不易,可能写不完整。不管怎么说也得给个点赞收藏加关注嘛。
注意:需下载EasyX、克罗地亚狂想曲.mp3,而且音频路径必须一样(保姆级教程见视频版,有答案解析)