c语言黑客帝国滚屏制作(c语言代码)
本文目录一览:
求"黑客帝国"里电脑屏幕上的"代码"不间断滚动的代码,
把下面复制到记事本,另存为HTML文件。你可以自己DIY一下。
html
head
title类似黑客帝国的01数字流/title
/head
body bgcolor=#000000
script language="JavaScript"
!--
if (document.all){
Cols=6;
Cl=24;//Space's are included so real length is 48!
Cs=10;
Ts=10;
Tc='#008800';
Tc1='#00ff00';
MnS=20;
MxS=30;
I=Cs;
Sp=new Array();S=new Array();Y=new Array();
C=new Array();M=new Array();B=new Array();
RC=new Array();E=new Array();Tcc=new Array(0,1);
document.write("div id='Container' style='position:absolute;top:0;left:-"+Cs+"'");
document.write("div style='position:relative'");
for(i=0; i Cols; i++){
S[i]=I+=Cs;
document.write("div id='A' style='position:absolute;top:0;font-family:Arial;font-size:"
+Ts+"px;left:"+S[i]+";width:"+Ts+"px;height:0px;color:"+Tc+";visibility:hidden'/div");
}
document.write("/div/div");
for(j=0; j Cols; j++){
RC[j]=1+Math.round(Math.random()*Cl);
Y[j]=0;
Sp[j]=Math.round(MnS+Math.random()*MxS);
for(i=0; i RC[j]; i++){
B[i]='';
C[i]=Math.round(Math.random()*1)+' ';
M[j]=B[0]+=C[i];
}
}
function Cycle(){
Container.style.top=window.document.body.scrollTop;
for (i=0; i Cols; i++){
var r = Math.floor(Math.random()*Tcc.length);
E[i] = 'font color='+Tc1+''+Tcc[r]+'/font';
Y[i]+=Sp[i];
if (Y[i] window.document.body.clientHeight){
for(i2=0; i2 Cols; i2++){
RC[i2]=1+Math.round(Math.random()*Cl);
for(i3=0; i3 RC[i2]; i3++){
B[i3]='';
C[i3]=Math.round(Math.random()*1)+' ';
C[Math.floor(Math.random()*i2)]=' '+' ';
M[i]=B[0]+=C[i3];
Y[i]=-Ts*M[i].length/1.5;
A[i].style.visibility='visible';
}
Sp[i]=Math.round(MnS+Math.random()*MxS);
}
}
A[i].style.top=Y[i];
A[i].innerHTML=M[i]+' '+E[i]+' ';
}
setTimeout('Cycle()',20)
}
Cycle();
}
// --
/script
body
/body
/html
求修改一段C++黑客帝国屏保的代码
在WndProc这个回调函数里加个鼠标移动消息(WM_MOUSEMOVE)的判断即可。
由于这个消息很灵敏,你感觉鼠标没有动,实际也退出了。所以,在这个消息下面再加上一个移动距离的判断即可。距离越短,鼠标移动时退出检测就越灵敏。
例如:
case WM_MOUSEMOVE:
{
static int xPos = 0;// 上一次鼠标位置
static int yPos = 0;
// 如果是0则是第一次接收,存储第一次鼠标位置
if (xPos == 0 || yPos == 0)
{
xPos = LOWORD(lParam);
yPos = HIWORD(lParam);
return 0;
}// 如果不是第一次接收,说明已有上次鼠标位置数据,与本次位置判断一下移动距离(即灵敏度)即可
else if ( abs(xPos - LOWORD(lParam)) 100 || abs(yPos -HIWORD(lParam)) 100 )
{
PostQuitMessage(0);// 鼠标移动大于100就退出
}
return 0;
}
abs求出绝对值来判断,可以保证如果算出负数距离仍能正确退出。lParam包含鼠标的xy坐标,需要LOWORD和HIWORD来取出。
实际上很简单,对吧?
如何用C语言制作一个可以在开始屏幕上滚动的字幕?
实现滚动字幕:
一、单行滚动,写一个函数,每次调用让全局或静态字符数组向一个方向移位(比如左移,从最右边一个非0字符开始遍历,依次覆盖左边的一个字符,最左边的字符被第二个字符覆盖,最右边一个非0位变移出的那个字符)。记得保留结束符号0。
二、之后循环打印字符数组。每次使用system("cls");清空控制台显示。
三、多行滚动,同理,只不过把字符移动覆盖,改成字符串移动覆盖。(移动方向的后一行覆盖前一行,把移动方向第一行内容赋值给最后一行)。
//ps:由于肉眼观察,移动需要间隔,用Sleep函数,但该函数会让线程停止,如滚屏间隔期间,还希望其它部分正常运行,需要写线程。
下面是参考代码:
#includestdio.h
#include windows.h
void sScreen(char str[],int len,int f);//len:内容长度,不包含结束符号。f=1向左移动。f=0向右移动;
int main()
{
char str[]="I LOVE YOU";
while(1)
{
printf("%s\n",str);
sScreen(str,10,0);
Sleep(1000);
system("cls");
}
return 0;
}
void sScreen(char str[],int len,int f)
{
int i;
char c;
if(f)
{
c=str[0];
for(i=0;ilen-1;i++)
str[i]=str[i+1];
str[len-1]=c;
}
if(!f)
{
c=str[len-1];
for(i=len-1;i0;i--)
str[i]=str[i-1];
str[0]=c;
}
}
c语言实现数据的滚屏显示
主要看你的数据是怎样的?
这是我以前写的。
也可先去我空间看下运行结果。
#include stdio.h
#define N 40
int printend(){
char page[5],i;
printf("\n\nESC-exit n-nextpage l-lastpage e-endpage s-startpage jumppage :");
i=0;
while((page[i++]=getche())!='\r');
page[i]='\0';
if(isdigit(page[0]))
return atoi(page);
else
return page[0];
}
main(){
int a,i,k;
for(i=1;i=N;i++){
printf("\n%2d**********************",i);
if(i%10==0){
a=printend();
k=i;
switch(a){
case 'p':
case 'P':
if(i10)
i-=20;
else
i=0;
break;
case 'n':
case 'N':
if(i=N)
i=N-10;
break;
case 's':
case 'S':
i=0;
break;
case 'e':
case 'E':
i=N-10;
break;
case 27:
exit(0);
default:
i=a*10-10;
if(iN){
printf("\nError ,max page is %d.",N/10);
printf("Press anykey to continue.");
getch();
i=N-10;
}
break;
}
clrscr();
}
}
getchar();
}