C++:生日快乐!

目录

——前言

——开始做

        一、信息准备系统——ReadyWork.cpp

                1、基本变量

                2、创建文件

                3、完整代码

                

         二、生日祝福系统——Surprise.cpp

                1、检测透支

                2、播放音乐

                3、吉祥语

                4、表白(#ᴗ#) 

        三、表白晗爱系统——DirNa.html

                1、DirNa.html

                2、city.png

                3、moon.png


——前言

看看时间:

1月31日!哈哈!我的生日!

于是,我打算发一期生日祝福代码的文章。

——开始做

        一、信息准备系统——ReadyWork.cpp

                首先,做一个信息准备系统 。

                让主程序知道你的信息,比如年龄呀,姓名呀,几月几日呀等等等等。

                我们可以以.out的方式存储。生成文件后自我删除。

                1、基本变量

                        我们使用name、old、day几个string变量来存储。

string name;
string old;
string day;

                        和一个第一次运行判断变量。因为是第一次运行,所以是false。

bool ifrun = false;

                2、创建文件

                      首先判断是否第一次运行,运行过就退出并且自我删除,否则运行程序。

	if(ifrun == false)
	{
		ifrun = true;
		//这里是主程序
	}else{
		system("del ReadyWork.exe");
		return 0;
	}

                        询问年龄、姓名、和几月几日 。

printf("欢迎使用 快乐星空版生日庆祝程序--\n");
Sleep(700);
printf("请问您叫什么?\n");
cin >> name;
Make_Text("name.out",name);
printf("请问您要过几岁生日?\n");
cin >> old;
Make_Text("old.out",old);	
printf("请问您几月几日过生日?\n");
cin >> day;
Make_Text("day.out",day);

                3、完整代码

                

#include <bits/stdc++.h>    
#include <conio.h>          
#include <windows.h>       
#include <heker.h>
using namespace std;
string name;
string old;
string day;
bool ifrun = false;
int main()
{
	if(ifrun == false)
	{
		ifrun = true;
		//这里是主程序
		printf("欢迎使用 快乐星空版生日庆祝程序--\n");
		Sleep(700);
		printf("请问您叫什么?\n");
		cin >> name;
		Make_Text("name.out",name);
		printf("请问您要过几岁生日?\n");
		cin >> old;
		Make_Text("old.out",old);	
		printf("请问您几月几日过生日?(月和日之间需要空格)\n");
		cin >> day;
		Make_Text("day.out",day);		
	}else{
		system("del ReadyWork.exe");
		return 0;
	}
}

         二、生日祝福系统——Surprise.cpp

                这个就是主程序啦。

                1、检测透支

                        为了防止你的female friend提前偷偷看,你想给他一个惊喜,那么就需要检测透支。

                        需要获取当前时间:

	time_t nowtime;
	time(&nowtime);
	tm* p = localtime(&nowtime); 

                        p -> tm_mon + 1是月, p -> tm_mday是日,其他的详细获取信息可以看这里:

变量名称作用
p->tm_year + 1900
p->tm_mon + 1
p->tm_mday
p->tm_hour时(24H)
p->tm_min
p->tm_sec

                        然后判断生日:

 

	int daya, dayb;
	freopen("day.out","r",stdin);
	scanf("%d %d", &daya, &dayb);
	fclose(stdin);
	if (p -> tm_mon + 1 != daya || p -> tm_mday != dayb){
		Hide();
		MessageBox(NULL, TEXT("你的生日还没到,不可以透支哟!\n[1.31]"), TEXT("[温馨提示]"), MB_ICONWARNING|MB_OK);
		return 0;
	}

                        2、播放音乐

                        播放音乐:(可以更改)

	HideCursor();
	MaKer_full_screen();
  	MUSIC bgMusic;
  	bgMusic.OpenFile("JingleBells.mp3");
  	bgMusic.SetVolume(2.0f);
  	if (bgMusic.IsOpen()) {
    	bgMusic.Play(0);
  	}

                        3、吉祥语

                        嘿嘿嘿嘿,这一步是关键!

  	string name;int old;
	freopen("name.out","r",stdin);
	cin >> name;
	fclose(stdin);
	freopen("old.out","r",stdin);
	cin >> old;
	fclose(stdin);
	printf("翻开日历\n");
	Sleep(2000);
	printf("%d.%d",daya,dayb);
	Sleep(2000);
	printf("又是新的一年\n");
	Sleep(2000);
	printf("又是新的开始\n");
	Sleep(2000);
	printf("希望%d岁的你\n",old);
	Sleep(2000);
	cout << name << endl;
	Sleep(2000);
	printf("能够\n");
	Sleep(2000);
	printf("一帆风顺\n");
	Sleep(700);
	printf("二龙戏珠\n");
	Sleep(700);
	printf("三阳开泰\n");
	Sleep(700);
	printf("四季平安\n");
	Sleep(700);
	printf("五福临门\n");
	Sleep(700);
	printf("六六大顺\n");
	Sleep(700);
	printf("七星高照\n");
	Sleep(700);
	printf("八方来财\n");
	Sleep(700);
	printf("九九同心\n");
	Sleep(700);
	printf("十全十美\n");
	Sleep(700);
	printf("百事可乐\n");
	Sleep(700);
	printf("千事吉祥\n");
	Sleep(700);
	printf("萬事如意\n");
	Sleep(2000);
	printf("也祝愿你的父母\n");
	Sleep(2000);
	printf("平安喜乐\n");
	Sleep(700);
	printf("健康快乐\n");
	Sleep(700);
	printf("好运连连\n");
	Sleep(700);
	printf("身披光芒\n");
	Sleep(700);
	printf("财源广进\n");
	Sleep(600);
	printf("祝愿你在这一天\n");
	Sleep(600);
	system("color 0c");
	printf("生日快乐!");
	Sleep(600);
	system("color 0e");
	Sleep(600);

                        4、表白(#ᴗ#) 

system("start DirNa.html");

        三、表白晗爱系统——DirNa.html

                1、DirNa.html

                        音乐可以更改

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <body>
    <div>
      <button id="full-screen-btn">进入全屏</button>
    </div>
  </body>
  <script>
    const html = document.querySelector('html');
    const fullScreenBtn = document.getElementById('full-screen-btn');
    fullScreenBtn.onclick = () => {
      html.requestFullscreen()
    }
  </script>
<html>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
	<style>
		body{margin:0;padding:0;overflow: hidden;}
		.city{width:100%;position:fixed;bottom: 0px;z-index: 100;}
		.city img{width: 100%;}
	</style>
	<title>生日快乐!</title>
</head>
<body onselectstart = "return false">
<audio autoplay="autoplay" id="audio_play" loop="loop">
/*音乐目录在这里改*/
<source src="F:\新年烟花\mp3\Remember Our Summer.mp3" type="audio/mpeg">
<source src= type="audio/mpeg">
</audio>
<div style="height:700px;overflow:hidden;">

	<canvas id='cas' style="background-color:rgba(0,5,24,1);">浏览器不支持canvas</canvas>
	<div class="city"><img src="city.png" alt="" /></div>
	<img src="moon.png" alt="" id="moon" style="visibility: hidden;"/>
	<div style="display:none">
	<div class="shape">生日快乐</div>
	<div class="shape">阖家欢乐</div>
        <div class="shape">万事如意</div>
	<div class="shape">生日快乐</div>
        <div class="shape">心想事成</div>
        <div class="shape">财源广进</div>\
	<div class="shape">生日快乐</div>
	<div class="shape">生日快乐</div>
	<div class="shape">生日快乐</div>
	<div class="shape">年年有余</div>
	<div class="shape">好运连连</div>
	<div class="shape">生日快乐</div>
	<div class="shape">天天向上</div>
	<div class="shape">平安喜乐</div>
	<div class="shape">健康快乐</div>
	<div class="shape">生日快乐</div>
	<div class="shape">生日快乐</div>
	<div class="shape">生日快乐</div>
	<div class="shape">生日快乐</div>
	<div class="shape">以梦为马</div>
	<div class="shape">不负韶华</div>
	<div class="shape">未来可期</div>
	<div class="shape">身披光芒</div>	
	</div>
	
</div>
	
	<script>
		var canvas = document.getElementById("cas");
		var ocas = document.createElement("canvas");
		var octx = ocas.getContext("2d");
		var ctx = canvas.getContext("2d");
		ocas.width = canvas.width = window.innerWidth;
		ocas.height = canvas.height = 700;
		var bigbooms = [];
	
		window.onload = function(){
			initAnimate()
		}

		function initAnimate(){
			drawBg();

			lastTime = new Date();
			animate();
		}

		var lastTime;
		function animate(){
			ctx.save();
			ctx.fillStyle = "rgba(0,5,24,0.1)";
			ctx.fillRect(0,0,canvas.width,canvas.height);
			ctx.restore();


			var newTime = new Date();
            if(newTime-lastTime>500+(window.innerHeight-767)/2){
				var random = Math.random()*10>8.4?true:false;
				var x = getRandom(canvas.width/5 , canvas.width*4/5);
				var y = getRandom(50 , 200);
				if(random){

					var bigboom = new Boom(getRandom(canvas.width/3,canvas.width*2/3) ,2,"#FFF" , {x:canvas.width/2 , y:200} , document.querySelectorAll(".shape")[parseInt(getRandom(0, document.querySelectorAll(".shape").length))]);
					bigbooms.push(bigboom)
				}
				else {
					var bigboom = new Boom(getRandom(canvas.width/3,canvas.width*2/3) ,2,"#FFF" , {x:x , y:y});
					bigbooms.push(bigboom)
				}
				lastTime = newTime;
				console.log(bigbooms)
			}

			stars.foreach(function(){
				this.paint();
			})

			drawMoon();

			bigbooms.foreach(function(index){
				var that = this;
				if(!this.dead){
					this._move();
					this._drawLight();
				}
				else{
					this.booms.foreach(function(index){
						if(!this.dead) {
							this.moveTo(index);
						}
						else if(index === that.booms.length-1){
							bigbooms[bigbooms.indexOf(that)] = null;
						}
					})
				}
			});
			
			raf(animate);
		}

		function drawMoon(){
			var moon = document.getElementById("moon");
			var centerX = canvas.width-200 , centerY = 100 , width = 80;
			if(moon.complete){
				ctx.drawImage(moon , centerX , centerY , width , width )
			}
			else {
				moon.onload = function(){
					ctx.drawImage(moon ,centerX , centerY , width , width)
				}
			}
			var index = 0;
			for(var i=0;i<10;i++){
				ctx.save();
				ctx.beginPath();
				ctx.arc(centerX+width/2 , centerY+width/2 , width/2+index , 0 , 2*Math.PI);
				ctx.fillStyle="rgba(240,219,120,0.005)";
				index+=2;
				ctx.fill();
				ctx.restore();
			}
			
		}

		Array.prototype.foreach = function(callback){
			for(var i=0;i<this.length;i++){
				if(this[i]!==null) callback.apply(this[i] , [i])
			}
		}

		var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); };
 		
		canvas.onclick = function(){
			var x = event.clientX;
			var y = event.clientY;
			var bigboom = new Boom(getRandom(canvas.width/3,canvas.width*2/3) ,2,"#FFF" , {x:x , y:y});
			bigbooms.push(bigboom)
		}
//
		//   canvas.addEventLisener("touchstart" , function(event){
		// 	var touch = event.targetTouches[0];
		// 	var x = event.pageX;
		//	var y = event.pageY;
		// 	var bigboom = new Boom(getRandom(canvas.width/3,canvas.width*2/3) ,2,"#FFF" , {x:x , y:y});
		// 	bigbooms.push(bigboom)
		// })

		var Boom = function(x,r,c,boomArea,shape){
			this.booms = [];
			this.x = x;
			this.y = (canvas.height+r);
			this.r = r;
			this.c = c;
			this.shape = shape || false;
			this.boomArea = boomArea;
			this.theta = 0;
			this.dead = false;
			this.ba = parseInt(getRandom(80 , 200));
		}
		Boom.prototype = {
			_paint:function(){
				ctx.save();
				ctx.beginPath();
				ctx.arc(this.x,this.y,this.r,0,2*Math.PI);
				ctx.fillStyle = this.c;
				ctx.fill();
				ctx.restore();
			},
			_move:function(){
				var dx = this.boomArea.x - this.x , dy = this.boomArea.y - this.y;
				this.x = this.x+dx*0.01;
				this.y = this.y+dy*0.01;

				if(Math.abs(dx)<=this.ba && Math.abs(dy)<=this.ba){
					if(this.shape){
						this._shapBoom();
					}
					else this._boom();
					this.dead = true;
				}
				else {
					this._paint();
				}
			},
			_drawLight:function(){
				ctx.save();
				ctx.fillStyle = "rgba(255,228,150,0.3)";
				ctx.beginPath();
				ctx.arc(this.x , this.y , this.r+3*Math.random()+1 , 0 , 2*Math.PI);
				ctx.fill();
				ctx.restore();
			},
			_boom:function(){
				var fragNum = getRandom(30 , 200);
				var style = getRandom(0,10)>=5? 1 : 2;
				var color;
				if(style===1){
					color = {
						a:parseInt(getRandom(128,255)),
						b:parseInt(getRandom(128,255)),
						c:parseInt(getRandom(128,255))
					}
				}

				var fanwei = parseInt(getRandom(300, 400));
				for(var i=0;i<fragNum;i++){
					if(style===2){
						color = {
							a:parseInt(getRandom(128,255)),
							b:parseInt(getRandom(128,255)),
							c:parseInt(getRandom(128,255))
						}
					}
					var a = getRandom(-Math.PI, Math.PI);
					var x = getRandom(0, fanwei) * Math.cos(a) + this.x;
					var y = getRandom(0, fanwei) * Math.sin(a) + this.y; 
					var radius = getRandom(0 , 2)
					var frag = new Frag(this.x , this.y , radius , color , x , y );
					this.booms.push(frag);
				}
			},
			_shapBoom:function(){
				var that = this;
				putValue(ocas , octx , this.shape , 5, function(dots){
					var dx = canvas.width/2-that.x;
					var dy = canvas.height/2-that.y;
					for(var i=0;i<dots.length;i++){
						color = {a:dots[i].a,b:dots[i].b,c:dots[i].c}
						var x = dots[i].x;
						var y = dots[i].y;
						var radius = 1;
						var frag = new Frag(that.x , that.y , radius , color , x-dx , y-dy);
						that.booms.push(frag);
					}
				})
			}
		}

		function putValue(canvas , context , ele , dr , callback){
			context.clearRect(0,0,canvas.width,canvas.height);
			var img = new Image();
			if(ele.innerHTML.indexOf("img")>=0){
				img.src = ele.getElementsByTagName("img")[0].src;
				imgload(img , function(){
					context.drawImage(img , canvas.width/2 - img.width/2 , canvas.height/2 - img.width/2);
					dots = getimgData(canvas , context , dr);
					callback(dots);
				})
			}
			else {
				var text = ele.innerHTML;
				context.save();
				var fontSize =200;
				context.font = fontSize+"px 宋体 bold";
				context.textAlign = "center";
				context.textBaseline = "middle";
				context.fillStyle = "rgba("+parseInt(getRandom(128,255))+","+parseInt(getRandom(128,255))+","+parseInt(getRandom(128,255))+" , 1)";
				context.fillText(text , canvas.width/2 , canvas.height/2);
				context.restore();
				dots = getimgData(canvas , context , dr);
				callback(dots);
			}
		}

		function imgload(img , callback){
			if(img.complete){
				callback.call(img);
			}
			else {
				img.onload = function(){
					callback.call(this);
				}
			}
		}

		function getimgData(canvas , context , dr){
			var imgData = context.getImageData(0,0,canvas.width , canvas.height);
			context.clearRect(0,0,canvas.width , canvas.height);
			var dots = [];
			for(var x=0;x<imgData.width;x+=dr){
				for(var y=0;y<imgData.height;y+=dr){
					var i = (y*imgData.width + x)*4;
					if(imgData.data[i+3] > 128){
						var dot = {x:x , y:y , a:imgData.data[i] , b:imgData.data[i+1] , c:imgData.data[i+2]};
						dots.push(dot);
					}
				}
			}
			return dots;
		}

		function getRandom(a , b){
			return Math.random()*(b-a)+a;
		}


		var maxRadius = 1 , stars=[];
		function drawBg(){
			for(var i=0;i<100;i++){
				var r = Math.random()*maxRadius;
				var x = Math.random()*canvas.width;
				var y = Math.random()*2*canvas.height - canvas.height;
				var star = new Star(x , y , r);
				stars.push(star);
				star.paint()
			}

		}

		var Star = function(x,y,r){
			this.x = x;this.y=y;this.r=r;
		}
		Star.prototype = {
			paint:function(){
				ctx.save();
				ctx.beginPath();
				ctx.arc(this.x , this.y , this.r , 0 , 2*Math.PI);
				ctx.fillStyle = "rgba(255,255,255,"+this.r+")";
				ctx.fill();
				ctx.restore();
			}
		}

		var focallength = 250;
		var Frag = function(centerX , centerY , radius , color ,tx , ty){
			this.tx = tx;
			this.ty = ty;
			this.x = centerX;
			this.y = centerY;
			this.dead = false;
			this.centerX = centerX;
			this.centerY = centerY;
			this.radius = radius;
			this.color = color;
		}

		Frag.prototype = {
			paint:function(){
				ctx.save();
				ctx.beginPath();
				ctx.arc(this.x , this.y , this.radius , 0 , 2*Math.PI);
				ctx.fillStyle = "rgba("+this.color.a+","+this.color.b+","+this.color.c+",1)";
				ctx.fill()
				ctx.restore();
			},
			moveTo:function(index){
				this.ty = this.ty+0.3;
				var dx = this.tx - this.x , dy = this.ty - this.y;
				this.x = Math.abs(dx)<0.1 ? this.tx : (this.x+dx*0.1);
				this.y = Math.abs(dy)<0.1 ? this.ty : (this.y+dy*0.1);
				if(dx===0 && Math.abs(dy)<=80){
					this.dead = true;
				}
				this.paint();
			}
		}
	</script>

</body>
</html>

 需要下载两张图片:

                2、city.png

                        

                3、moon.png

 也可以去上面下载。

注意,这所有的文件都要放在一个目录里奥!

 

   

 

                         

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐星空Maker

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值