导航
当前位置:网站首页 > 黑客网站 > 电脑制作黑客帝国,黑客帝国创意

电脑制作黑客帝国,黑客帝国创意

作者:hacker 日期:2022-07-24 分类:黑客网站

导航:

黑客帝国文字雨 flash 怎么制作

可用C语言编程来达到黑客文字雨的效果  。。。

效果如下:

代码如下,vc++编译通过 。。

#include windows.h

#define ID_TIMER    1

#define STRMAXLEN  25 //一个显示列的最大长度

#define STRMINLEN  8  //一个显示列的最小长度

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表

{

struct tagCharChain *prev; //链表的前个元素

TCHAR  ch;                  //一个显示列中的一个字符

struct tagCharChain *next; //链表的后个元素

}CharChain, *pCharChain;

typedef struct tagCharColumn

{

CharChain *head, *current, *point;

int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度

int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的

}CharColumn, *pCharColumn;

int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("matrix") ;

HWND            hwnd ;

MSG            msg ;

WNDCLASS    wndclass ;

wndclass.style            = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc      = WndProc ;

wndclass.cbClsExtra       = 0 ;

wndclass.cbWndExtra       = 0 ;

wndclass.hInstance        = hInstance ;

wndclass.hIcon            = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor          = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground    = (HBRUSH) GetStockObject (BLACK_BRUSH) ;

wndclass.lpszMenuName     = NULL ;

wndclass.lpszClassName    = szAppName ;

if(!RegisterClass (wndclass))

{

MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ;

return 0;

}

hwnd = CreateWindow (szAppName, NULL,

WS_DLGFRAME | WS_THICKFRAME | WS_POPUP,

0, 0,

GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),

NULL, NULL, hInstance,

NULL) ;

ShowWindow (hwnd, SW_SHOWMAXIMIZED) ; //最大化显示

UpdateWindow (hwnd) ;

ShowCursor(FALSE); //隐藏鼠标光标

srand ((int) GetCurrentTime ()) ; //初始化随机数发生器

while (GetMessage (msg, NULL, 0, 0))

{

TranslateMessage (msg) ;

DispatchMessage (msg) ;

}

ShowCursor(TRUE); //显示鼠标光标

return msg.wParam ;

}

TCHAR randomChar() //随机字符产生函数

{

return (TCHAR)(rand()%(126-33)+33); //33到126之间

}

int init(CharColumn *cc, int cyScreen, int x) //初始化

{

int j;

cc-iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度

cc-x = x+3 ;        //显示列的开始显示的x坐标

cc-y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标

cc-iMustStopTimes = rand()%6 ;

cc-iStopTimes    = 0 ;

cc-head = cc-current =

(pCharChain)calloc(cc-iStrLen, sizeof(CharChain)); //生成显示列

for(j=0; jcc-iStrLen-1; j++)

{

cc-current-prev = cc-point; //cc-point一个显示列的前个元素

cc-current-ch  = '\0';

cc-current-next = cc-current+1; //cc-current+1一个显示列的后个元素

cc-point          = cc-current++; //cc-point = cc-current; cc-current++;

}

cc-current-prev = cc-point; //最后一个节点

cc-current-ch  = '\0';

cc-current-next = cc-head;

cc-head-prev    = cc-current; //头节点的前一个为此链的最后一个元素

cc-current = cc-point = cc-head; //free掉申请的内存要用current当参数

cc-head-ch = randomChar(); // 对链表头的 元素填充

return 0;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC          hdc ;

//ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进

int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用

static  HDC hdcMem;

HFONT    hFont;

static  HBITMAP hBitmap;

static  int cxScreen, cyScreen; //屏幕的宽度 高度.

static  int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数

static  CharColumn *ccChain;

switch (message)

{

case WM_CREATE:

cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度

cyScreen = GetSystemMetrics(SM_CYSCREEN) ;

SetTimer (hwnd, ID_TIMER, 10, NULL) ;

hdc = GetDC(hwnd);

hdcMem = CreateCompatibleDC(hdc);

hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen);

SelectObject(hdcMem, hBitmap);

ReleaseDC(hwnd, hdc);

//创建字体

hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0,

DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,

DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys"));

SelectObject(hdcMem, hFont);

DeleteObject (hFont) ;

SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明

iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数

ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn));

for(i=0; iiColumnCount; i++)

{

init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);

}

return 0 ;

case WM_TIMER:

hdc = GetDC(hwnd);

PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色

for(i=0; iiColumnCount; i++)

{

ctn = (ccChain+i)-iStopTimes++  (ccChain+i)-iMustStopTimes;

//

(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列

//第一个字符显示为 白色

SetTextColor(hdcMem, RGB(255, 255, 255));

TextOut(hdcMem, (ccChain+i)-x, (ccChain+i)-y, ((ccChain+i)-point-ch), 1);

j = (ccChain+i)-y;

(ccChain+i)-point = (ccChain+i)-point-next;

//遍历整个显示列,将这个显示列里的字符从下往上显示

temp = 0 ; //temp绿色过度到黑色之用

while((ccChain+i)-point != (ccChain+i)-head  (ccChain+i)-point-ch)

{

SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)-iStrLen), 0));

TextOut(hdcMem, (ccChain+i)-x, j-=iFontHeight, ((ccChain+i)-point-ch), 1);

(ccChain+i)-point = (ccChain+i)-point-next;

}

if(ctn)

(ccChain+i)-iStopTimes = 0 ;

else continue;

(ccChain+i)-y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度

//如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度

if( (ccChain+i)-y-(ccChain+i)-iStrLen*iFontHeight  cyScreen)

{

free( (ccChain+i)-current );

init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);

}

//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示

(ccChain+i)-head = (ccChain+i)-head-prev;

(ccChain+i)-head-ch = randomChar();

}

BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);

ReleaseDC(hwnd, hdc);

return 0;

case WM_RBUTTONDOWN:

KillTimer (hwnd, ID_TIMER) ;

return 0;

case WM_RBUTTONUP:

SetTimer (hwnd, ID_TIMER, 10, NULL) ;

return 0;

//处理善后工作

case WM_KEYDOWN:

case WM_LBUTTONDOWN:

case WM_DESTROY:

KillTimer (hwnd, ID_TIMER) ;

DeleteObject(hBitmap);

DeleteDC(hdcMem);

for(i=0; iiColumnCount; i++)

{

free( (ccChain+i)-current );

}

free(ccChain);

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

用PPT做的黑客帝国如何做出来的?

PPT电脑制作黑客帝国?能不能说明白一点啊电脑制作黑客帝国电脑制作黑客帝国你确定你说电脑制作黑客帝国的是PPT 电脑制作黑客帝国, 巨硬公司的那个PowerPoint? 它能做黑客帝国? 你说的是做一个黑客帝国的PPT吗?老实说 不知道你问什么 我勉强回答一下吧 希望你能来追问 说详细一点 我也好帮你解答啊如果做?去网上下一些黑客帝国的图和资料 做ppt肯定需要这些吧 你要背景音乐的话就下背景音乐吧 背景音乐建议你去电驴里面找黑客帝国原声带 那里最全且没有病毒 在网页找不好找全 我也是电驴下的 然后根据你的喜欢做一个PPT 如果你不会做PPT那我帮不了你了 你说到音乐 我想你是想知道你手头上的黑客帝国PPT里的音乐要怎么弄出来吗? 如果PPT加了音乐一般幻灯片上都有小喇叭的 对小喇叭点右键 很容易找到音乐文件的位置的 PPT的音乐都是通过电脑里链接上去的 不会和PPT融为一体的 如果你的PPT有音乐 那么你得到这个PPT的时候肯定文件夹里带有这个音乐的

《黑客帝国》中凌空旋转的效果是怎么制作出来的?

那段已经名垂影史的镜头叫做

子弹时间

什么是子弹时间?

自从《黑客帝国》上映后,“子弹时间”特技似乎成了它的一块招牌,无数影迷只要提起《黑客帝国》,就一定会说到“子弹时间”。而且,该特技后来也是被模仿得最多的银幕特技之一,无数的广告和电影、电视中都对它进行了模仿,其中比较有名的有《霹雳娇娃》、《怪物史莱克》、《恐怖电影》等,除了《怪物史莱克》中学得比较有意思外,其他的多为东施效颦之作。

他们拍摄“子弹时间”镜头时,是以120架照相机精确地摆放在一条由电脑追踪系统设定的路线上,然后让这些相机的快门按照电脑预先编程好的顺序和时间间隔开始拍照,然后把各个角度拍得的照片全部扫描进电脑,由电脑对相邻两张照片之间的差异进行虚拟修补,这样就能获得360度镜头下拍摄对象的连贯、顺滑的动作,最后再由电脑将该连贯的动态图象与背景融合,才有了我们在电影中看到的令人拍案叫绝的新奇镜头。

猜你还喜欢

已有4位网友发表了看法:

  • 访客

    访客  评论于 [2022-07-24 14:24:25]  回复

    CharChain *prev; //链表的前个元素TCHAR  ch;                  //一个显示列中的一个字符struct tagCharChain *next; //链表的后个元素}CharChain, *pChar

  • 访客

    访客  评论于 [2022-07-24 13:02:38]  回复

    it(ccChain+i, cyScreen, (iFontWidth*3/2)*i);}//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示(ccChain+i)-head = (ccChain+i)-head-prev;(c

  • 访客

    访客  评论于 [2022-07-24 14:12:55]  回复

    pTimes;//(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列//第一个字符显示为 白色SetTextColor(hdcMem, RGB(255, 255, 255));TextOut(h

  • 访客

    访客  评论于 [2022-07-24 23:05:25]  回复

    ance ;wndclass.hIcon            = LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor          = LoadCursor (NULL, IDC_ARROW) ;wndcla

欢迎 发表评论:

{/if}