MD!第二弹!!!这时候发机战搞笑漫画!
http://www.stage1st.com/bbs/upload/c53522ca914e9d084e3e73a07546ebd5.jpghttp://www.stage1st.com/bbs/upload/6ff71b8493a4a1bd4042f05ee3c75c59.jpg
http://www.stage1st.com/bbs/upload/2f20bf4d06d3e0022f3aa003ff74903a.jpg
http://www.stage1st.com/bbs/upload/cda098640d7a509346cb6a2c1ca9c230.jpg
http://www.stage1st.com/bbs/upload/fee0ddb1b58a3fbdca6d9bc8cddaba95.jpg
http://www.stage1st.com/bbs/upload/3f1404dde42ba19b887206ce02dc1f4a.jpg
http://www.stage1st.com/bbs/upload/e5c1efdc5b2ef9ca80075be1d014018e.jpg
http://www.stage1st.com/bbs/upload/5d2822c8fba7ce1c794bdb8e2d0fe00e.jpg
http://www.stage1st.com/bbs/upload/59bc548978b886ed79099da3da642772.jpg
http://www.stage1st.com/bbs/upload/90a1556b6e98df9943c9731fd7d6db43.jpg 向大神献上我的最爱之1
http://home.pchome.com.tw/cool/usso/V2AB.jpg 请大家排好队来月亮,哦,不,是太阳小白~
http://allgames.gamesh.com/srw/down/pic/desktop/gada36600.jpg 最初由 鱼丸 发表
这贴垒的速度比我看的速度还快,受不了了
楼主,所谓Fans,就是听不进任何反面的声音的
以后提出意见,见解可以,但垃圾这个词儿是千万不敢乱说的啊
说什么是垃圾我不反对
但是空喊口号很讨厌
提出让人笑破肚皮的理论更讨厌
http://allgames.gamesh.com/srw/down/pic/desktop/pici/16.jpg 最初由 fromhell 发表
天!
不懂装懂!??????
居然?!!!
我无语了。
是不是一定要我写一篇:“怎样用dx画点”的文章才行?????
写吧,写的好的话精华加顶
从这个角度看,我也能写个如何用PT上色…… 002 插个队 刚想到还没庆祝年度10大强贴第2个不二人选诞生呢 XD~一页一首MID010
http://www.stage1st.com/bbs/temp/1bf1021f2fe28fbbbf28b9d55e3b842c.gif dx8.0虽然把ddraw和dx3d合成了dxgraph,但个人才疏学浅,还是习惯于ddraw。
要画点,我们首先将页面LOCK,此时可以得到页面的首指针。
然后,我们可以通过将指针移动到我们要的点,在mov给它一个32bit的值(rgb) 最初由 鱼丸 发表
这贴垒的速度比我看的速度还快,受不了了
楼主,所谓Fans,就是听不进任何反面的声音的
以后提出意见,见解可以,但垃圾这个词儿是千万不敢乱说的啊
和反面没关系 机战我也有很多不满意的地方 不过没理由的乱说再用一些可笑的理论来掩饰再加不知道承认自己的不足实在是无法忍受啊
002 不过我真的是听了heats忍不住了才出手的啊 我真的有罪啊 真顽强的楼主
http://imgphoto.21cn.com/albums/photos/7/2/2/7222494/1086761772.jpg 最初由 fromhell 发表
dx8.0虽然把ddraw和dx3d合成了dxgraph,但个人才疏学浅,还是习惯于ddraw。
要画点,我们首先将页面LOCK,此时可以得到页面的首指针。
然后,我们可以通过将指针移动到我们要的点,在mov给它一个32bit的值(rgb)
http://www.stage1st.com/bbs/temp/604fe25834d1163335510377d998cce9.gif 最初由 fromhell 发表
dx8.0虽然把ddraw和dx3d合成了dxgraph,但个人才疏学浅,还是习惯于ddraw。
要画点,我们首先将页面LOCK,此时可以得到页面的首指针。
然后,我们可以通过将指针移动到我们要的点,在mov给它一个32bit的值(rgb)
中心点是咋找到的涅? 最初由 change8224 发表
中心点是咋找到的涅?... 指针啊,指针
真废柴,用指针往那里一指就出来了
<bgsound src=http://www.12101.com/john/midi/gm.mid loop=-1> 我想楼主大概小白论坛混长了
以为自己很了不起吧~!
http://allgames.gamesh.com/srw/down/pic/gpic/G/G-04.jpg 果然是达人,不用任何函数就能得到指针地址……
拜,请把程序写出来让我们外行瞻仰瞻仰 给你个函数,自己去看吧。
void AlphaBlt(LPDIRECTDRAWSURFACE7 lpDDS,int lpDDSX,int lpDDSY,int RectTopX,int RectTopY,int RectBottomX,int RectBottomY){
ZeroMemory(&ddsd_src,sizeof(ddsd_src));
ddsd_src.dwSize=sizeof(ddsd_src);
ZeroMemory(&ddsd_dest,sizeof(ddsd_dest));
ddsd_dest.dwSize=sizeof(ddsd_dest);
lpDDSBuffer->Lock(NULL,&ddsd_src,DDLOCK_WAIT,NULL);
lpDDS->Lock(NULL,&ddsd_dest,DDLOCK_WAIT,NULL);
_int64 mask=0x7f7f7f7f7f7f7f7f;
int FirstPoint_src=lpDDSY*ddsd_src.lPitch+lpDDSX*4;
int FirstPoint_dest=RectTopY*ddsd_dest.lPitch+RectTopX*4;
int lpDDSHeight=RectBottomY-RectTopY;
int lpDDSWidth=(RectBottomX-RectTopX)/2;
_int64 Black=0x00000000ffffffff;
_asm{
mov eax,ddsd_src.lpSurface
add eax,FirstPoint_src
mov ebx,ddsd_dest.lpSurface
add ebx,FirstPoint_dest
mov edi,lpDDSHeight
FirstLoop:
push eax
push ebx
mov esi,lpDDSWidth
SecondLoop:
movq mm0,
movq mm1,
add ,0
jnz NoBlack
add ,0
jz ColorKey
pand mm1,Black
NoBlack:
psrlw mm0,1
pand mm0,mask
pand mm1,mask
paddusb mm0,mm1
ColorKey:
movq ,mm0
add eax,8
add ebx,8
dec esi
jnz SecondLoop
pop ebx
pop eax
add eax,ddsd_src.lPitch
add ebx,ddsd_dest.lPitch
dec edi
jnz FirstLoop
emms
}
lpDDSBuffer->Unlock(NULL);
lpDDS->Unlock(NULL);
}
buffer是我建的一个后台缓存,放在内存里面,这样速度快。
lpdds是存我们要向上面贴的图的缓存,理论上跟buffer没有区别。
次函数的效果是将图贴到buffer上,并半透明。
好久没弄了,有些忘了。
像创建页面这种事情,形式基本固定,没有必要记住,只要关键的地方懂就行(我就记不住,每次都要照着看) 最初由 john 发表
指针啊,指针
真废柴,用指针往那里一指就出来了
<bgsound src=http://www.12101.com/john/midi/gm.mid loop=-1>
040 我怎么给忘了。。。。该打 过来留个位子,无他 可惜啊,这本书我也有
directdraw programming,坚果出版社出品,作者为bret timmins 最初由 change8224 发表
040 我怎么给忘了。。。。该打... 真该打
调用的函数就是ppo,全称PointPointOut 补充一点:上面的函数还有将black作为颜色键的功能。
也就是说,black是不会贴到buffer上的。 最初由 Pluto_Shi 发表
可惜啊,这本书我也有
directdraw programming,坚果出版社出品,作者为bret timmins
这个,你看仔细了,可不同了!! 用不用我把页数也告诉你 而且,我也没有你说的书。摆托!! 神奇了啊
http://allgames.gamesh.com/srw/down/pic/gpic/0093/0093-36.jpg 楼主,我听说改神是自己做金手指的
你也做个给我们吧,那东西我感觉很复杂,一直不太会用,你这么厉害,能在功能不缩水的情况下简化一下么? int PASCAL WinMain(HINSTANCE hinstance,HINSTANCE hPrevhinstance,LPSTR lpCmdLine,int windowmode){
if(!initwindow(\"ExpForCopy\",hinstance,windowmode)||!initddraw()){
MessageBox(hwnd,\"MyFish\",\"There must be something wrong!\",MB_OK);
return false;
}
InitPicture();
MSG msg;
for(;;){
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
if(msg.message==WM_QUIT){
MessageBox(hwnd,\"Let\'s us get out of this window\",\"gogogo\",MB_OK);
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else Refresh();
}
return msg.lParam;
}
bool initwindow(char *windowname,HINSTANCE hinstance,int windowmode){
WNDCLASSEX win;
win.cbSize=sizeof(WNDCLASSEX);
win.style=CS_HREDRAW|CS_VREDRAW;
win.lpfnWndProc=(WNDPROC)WinProc;
win.cbClsExtra=0;
win.cbWndExtra=0;
win.hInstance=hinstance;
win.hIcon=NULL;
win.hCursor=NULL;
win.hbrBackground=CreateSolidBrush(RGB(255,255,255));
win.lpszMenuName=NULL;
win.lpszClassName=windowname;
win.hIconSm=NULL;
RegisterClassEx(&win);
hwnd=CreateWindow(windowname,windowname,WS_POPUP|WS_MAXIMIZE,CW_USEDEFAULT,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),NULL,NULL,hinstance,NULL);
if(!hwnd)return false;
ShowWindow(hwnd,windowmode);
UpdateWindow(hwnd);
return true;
}
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
switch(message){
case WM_KEYDOWN:
switch(wParam){
case VK_ESCAPE:
KillTimer(hwnd,0);
PostMessage(hwnd,WM_CLOSE,0,0);
break;
case VK_DOWN:
if(snake.direction!=2)snake.direction=3;
break;
case VK_UP:
if(snake.direction!=3)snake.direction=2;
break;
case VK_LEFT:
if(snake.direction!=0)snake.direction=1;
break;
case VK_RIGHT:
if(snake.direction!=1)snake.direction=0;
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
bool initddraw(){
if(DirectDrawCreateEx(NULL,(void**)&lpDD,IID_IDirectDraw7,NULL)!=DD_OK)return false;
if(lpDD->SetCooperativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN|DDSCL_NOWINDOWCHANGES|DDSCL_ALLOWREBOOT)!=DD_OK)return false;
if(lpDD->SetDisplayMode(1024,768,32,0,DDSDM_STANDARDVGAMODE)!=DD_OK)return false;
memset(&ddsd,0,sizeof(DDSURFACEDESC2));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
if(lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL)!=DD_OK)return false;
ddsd.dwFlags=DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT;
ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY;
ddsd.dwHeight=768;
ddsd.dwWidth=1024;
if(lpDD->CreateSurface(&ddsd,&lpDDSBuffer,NULL)!=DD_OK)return false;
for(int i=0;i<3;i++)if(lpDD->CreateSurface(&ddsd,&lpDDSBack,NULL)!=DD_OK)return false;
for(int o=0;o<18;o++)if(lpDD->CreateSurface(&ddsd,&IpDDSBack,NULL)!=DD_OK)return false;
hdc=::CreateCompatibleDC(NULL);
return true;
}
bool LoadPicture(char *PictureName,int i,int Iorl){
bitmap=(HBITMAP)::LoadImage(NULL,PictureName,IMAGE_BITMAP,1024,768,LR_LOADFROMFILE);
::SelectObject(hdc,bitmap);
if(Iorl==1){
if(lpDDSBack->GetSurfaceDesc(&ddsd)!=DD_OK)return false;
if(lpDDSBack->GetDC(&hdc1)!=DD_OK)return false;
::BitBlt(hdc1,0,0,ddsd.dwWidth,ddsd.dwHeight,hdc,0,0,SRCCOPY);
lpDDSBack->ReleaseDC(hdc1);
}
else{
if(IpDDSBack->GetSurfaceDesc(&ddsd)!=DD_OK)return false;
if(IpDDSBack->GetDC(&hdc1)!=DD_OK)return false;
::BitBlt(hdc1,0,0,ddsd.dwWidth,ddsd.dwHeight,hdc,0,0,SRCCOPY);
IpDDSBack->ReleaseDC(hdc1);
}
return true;
}
void InitPicture(){
LoadPicture(\"snakebody.bmp\",1,1);
LoadPicture(\"rikku.bmp\",0,1);
LoadPicture(\"fish.bmp\",2,1);
LoadPicture(\"fishwater6.bmp\",5,0);
LoadPicture(\"fishwater5.bmp\",4,0);
LoadPicture(\"fishwater4.bmp\",3,0);
LoadPicture(\"fishwater3.bmp\",2,0);
LoadPicture(\"fishwater2.bmp\",1,0);
LoadPicture(\"fishwater1.bmp\",0,0);
LoadPicture(\"FishMonster6.bmp\",17,0);
LoadPicture(\"FishMonster5.bmp\",16,0);
LoadPicture(\"FishMonster4.bmp\",15,0);
LoadPicture(\"FishMonster3.bmp\",14,0);
LoadPicture(\"FishMonster2.bmp\",13,0);
LoadPicture(\"FishMonster1.bmp\",12,0);
LoadPicture(\"FishMonsterLeft6.bmp\",11,0);
LoadPicture(\"FishMonsterLeft5.bmp\",10,0);
LoadPicture(\"FishMonsterLeft4.bmp\",9,0);
LoadPicture(\"FishMonsterLeft3.bmp\",8,0);
LoadPicture(\"FishMonsterLeft2.bmp\",7,0);
LoadPicture(\"FishMonsterLeft1.bmp\",6,0);
}
int RandEx(int max){
srand(GetTickCount()*10000);
return rand()%max;
}
bool IsTouch(LPDIRECTDRAWSURFACE7 lpDDS_src,int lpDDS_srcX,int lpDDS_srcY){
ZeroMemory(&ddsd_src,sizeof(ddsd_src));
ddsd_src.dwSize=sizeof(ddsd_src);
lpDDS_src->Lock(NULL,&ddsd_src,DDLOCK_WAIT,NULL);
BYTE *lPsrc=(BYTE*)ddsd_src.lpSurface;
int Distance=lpDDS_srcY*ddsd_src.lPitch+lpDDS_srcX*4;
int IsTouch=0;
_asm{
mov eax,lPsrc
add eax,Distance
mov ebx,
cmp ebx,0
jz NoTouch
mov IsTouch,1
NoTouch:
emms
}
lpDDS_src->Unlock(NULL);
return IsTouch;
}
void CopyBlt(LPDIRECTDRAWSURFACE7 lpDDS_src,LPDIRECTDRAWSURFACE7 lpDDS_dest,int lpDD_srcX,int lpDD_srcY,int lpDD_destTopX,int lpDD_destTopY,int lpDD_destBottomX,int lpDD_destBottomY){
ZeroMemory(&ddsd_src,sizeof(ddsd_src));
ddsd_src.dwSize=sizeof(ddsd_src);
ZeroMemory(&ddsd_dest,sizeof(ddsd_dest));
ddsd_dest.dwSize=sizeof(ddsd_dest);
lpDDS_src->Lock(NULL,&ddsd_src,DDLOCK_WAIT,NULL);
lpDDS_dest->Lock(NULL,&ddsd_dest,DDLOCK_WAIT,NULL);
BYTE *lPsrc=(BYTE*)ddsd_src.lpSurface;
BYTE *lPdest=(BYTE*)ddsd_dest.lpSurface;
int FirstPoint_src=lpDD_srcY*ddsd_src.lPitch+lpDD_srcX*4;
int FirstPoint_dest=lpDD_destTopY*ddsd_dest.lPitch+lpDD_destTopX*4;
int lpDD_destHeight=lpDD_destBottomY-lpDD_destTopY;
int lpDD_destWidth=(lpDD_destBottomX-lpDD_destTopX)/2;
_asm{
mov eax,lPsrc
add eax,FirstPoint_src
mov ebx,lPdest
add ebx,FirstPoint_dest
mov edi,lpDD_destHeight
FirstLoop:
push eax
push ebx
mov esi,lpDD_destWidth
SecondLoop:
movq mm0,
movq ,mm0
add ebx,8
add eax,8
dec esi
jnz SecondLoop
pop ebx
pop eax
add eax,ddsd_src.lPitch
add ebx,ddsd_dest.lPitch
dec edi
jnz FirstLoop
emms
}
lpDDS_src->Unlock(NULL);
lpDDS_dest->Unlock(NULL);
}
void AlphaBlt(LPDIRECTDRAWSURFACE7 lpDDS,int lpDDSX,int lpDDSY,int RectTopX,int RectTopY,int RectBottomX,int RectBottomY){
ZeroMemory(&ddsd_src,sizeof(ddsd_src));
ddsd_src.dwSize=sizeof(ddsd_src);
ZeroMemory(&ddsd_dest,sizeof(ddsd_dest));
ddsd_dest.dwSize=sizeof(ddsd_dest);
lpDDSBuffer->Lock(NULL,&ddsd_src,DDLOCK_WAIT,NULL);
lpDDS->Lock(NULL,&ddsd_dest,DDLOCK_WAIT,NULL);
_int64 mask=0x7f7f7f7f7f7f7f7f;
int FirstPoint_src=lpDDSY*ddsd_src.lPitch+lpDDSX*4;
int FirstPoint_dest=RectTopY*ddsd_dest.lPitch+RectTopX*4;
int lpDDSHeight=RectBottomY-RectTopY;
int lpDDSWidth=(RectBottomX-RectTopX)/2;
_int64 Black=0x00000000ffffffff;
_asm{
mov eax,ddsd_src.lpSurface
add eax,FirstPoint_src
mov ebx,ddsd_dest.lpSurface
add ebx,FirstPoint_dest
mov edi,lpDDSHeight
FirstLoop:
push eax
push ebx
mov esi,lpDDSWidth
SecondLoop:
movq mm0,
movq mm1,
add ,0
jnz NoBlack
add ,0
jz ColorKey
pand mm1,Black
NoBlack:
psrlw mm0,1
pand mm0,mask
pand mm1,mask
paddusb mm0,mm1
ColorKey:
movq ,mm0
add eax,8
add ebx,8
dec esi
jnz SecondLoop
pop ebx
pop eax
add eax,ddsd_src.lPitch
add ebx,ddsd_dest.lPitch
dec edi
jnz FirstLoop
emms
}
lpDDSBuffer->Unlock(NULL);
lpDDS->Unlock(NULL);
}
void SnakeMove(){
if(NumberOfSnake>=1)for(int i=NumberOfSnake;i>=1;i--){
if(snake.direction==0){
if(snake.x>=10)snake.x=snake.x-10;
else snake.x=0;
snake.y=snake.y;
}
else if(snake.direction==1){
if(snake.x<=895)snake.x=snake.x+10;
else snake.x=905;
snake.y=snake.y;
}
else if(snake.direction==2){
if(snake.y<=610)snake.y=snake.y+10;
else snake.y=620;
snake.x=snake.x;
}
else if(snake.direction==3){
if(snake.y>=10)snake.y=snake.y-10;
else snake.y=0;
snake.x=snake.x;
}
}
if(snake.direction==0){
if(snake.x<=925)snake.x=snake.x+snake.speed;
else snake.death=1;
}
else if(snake.direction==1){
if(snake.x>=5)snake.x=snake.x-snake.speed;
else snake.death=1;
}
else if(snake.direction==2){
if(snake.y>=5)snake.y=snake.y-snake.speed;
else snake.death=1;
}
else if(snake.direction==3){
if(snake.y<=680)snake.y=snake.y+snake.speed;
else snake.death=1;
}
}
void Refresh(){
Dead();
if(snake.death==0){
FishInWater();
eated();
SnakeMove();
Rendfish();
for(int i=0;i<=NumberOfSnake;i++)AlphaBlt(lpDDSBack,snake.x,snake.y,snake.ImageTopX,snake.ImageTopY,snake.ImageButtomX,snake.ImageButtomY);
DisplayScore(\"你的分数:\",0,0);
DisplayScore(ItoA(),100,0);
CopyBlt(lpDDSPrimary,lpDDSBuffer,0,0,0,0,1024,768);
}
else{
CopyBlt(lpDDSPrimary,lpDDSBack,0,0,0,0,1024,768);
}
}
void Rendfish(){
if(fish.exist==0){
fish.x=RandEx(100)*9.5;
fish.y=RandEx(100)*6.5;
fish.exist=1;
}
}
void eated(){
if(fish.exist==1)if(snake.y-fish.y>=snake.ImageTopY-snake.ImageButtomY&&snake.y-fish.y<=fish.ImageButtomYL-fish.ImageTopYL&&snake.x-fish.x<=fish.ImageButtomXL-fish.ImageTopXL&&snake.x-fish.x>=snake.ImageTopX-snake.ImageButtomX){
if(fish.Direction==0){
if(snake.direction==1){
if(IsTouch(IpDDSBack,fish.ImageTopXL+(snake.x+snake.width-fish.x),fish.ImageTopYL+(snake.y+snake.height/2-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
else if(snake.direction==0){
if(IsTouch(IpDDSBack,fish.ImageTopXL+(snake.x-fish.x),fish.ImageTopYL+snake.y+(snake.height/2-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
else if(snake.direction==2){
if(IsTouch(IpDDSBack,fish.ImageTopXL+(snake.x+snake.width/2-fish.x),fish.ImageTopYL+(snake.y-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
else{
if(IsTouch(IpDDSBack,fish.ImageTopXL+(snake.x+snake.width/2-fish.x),fish.ImageTopYL+(snake.y+snake.height-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
}
if(fish.Direction==6){
if(snake.direction==1){
if(IsTouch(IpDDSBack,fish.ImageTopXR+(snake.x+snake.width-fish.x),fish.ImageTopYR+(snake.y+snake.height/2-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
else if(snake.direction==0){
if(IsTouch(IpDDSBack,fish.ImageTopXR+(snake.x-fish.x),fish.ImageTopYR+(snake.y+snake.height/2-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
else if(snake.direction==2){
if(IsTouch(IpDDSBack,fish.ImageTopXR+(snake.x+snake.width/2-fish.x),fish.ImageTopYR+(snake.y-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
else{
if(IsTouch(IpDDSBack,fish.ImageTopXR+(snake.x+snake.width/2-fish.x),fish.ImageTopYR+(snake.y+snake.height-fish.y))){
fish.exist=0;
junction();
score=score+interval;
interval+=5;
}
}
}
}
}
void junction(){
NumberOfSnake++;
switch(snake.direction){
case 0:
if(snake.x>=10)snake.x=snake.x-10;
else snake.x=0;
snake.y=snake.y;
break;
case 1:
if(snake.x<=895)snake.x=snake.x+10;
else snake.x=905;
snake.y=snake.y;
break;
case 2:
if(snake.y<=610)snake.y=snake.y+10;
else snake.y=620;
snake.x=snake.x;
break;
case 3:
if(snake.y>=10)snake.y=snake.y-10;
else snake.y=0;
snake.x=snake.x;
break;
}
}
void DisplayScore(char *Score,int x,int y){
if (lpDDSBuffer->GetDC(&hdc) == DD_OK) {
SetBkColor(hdc, RGB(0, 0, 255));
SetTextColor(hdc, RGB(255, 255, 0));
TextOut(hdc,x,y, Score, strlen(Score));
lpDDSBuffer->ReleaseDC(hdc);
}
}
char *ItoA(){
int s=score;
char* a=(char*)malloc(sizeof(char));
a=itoa(score,a,10);
return a;
}
void Dead(){
if(NumberOfSnake>=10)for(int i=NumberOfSnake;i>=10;i--){
if(snake.y-snake.y>=snake.ImageTopY-snake.ImageButtomY&&snake.y-snake.y<=snake.ImageButtomY-snake.ImageTopY&&snake.x-snake.x<=snake.ImageButtomX-snake.ImageTopX&&snake.x-snake.x>=snake.ImageTopX-snake.ImageButtomX){
if(snake.direction==0){
if(IsTouch(IpDDSBack,snake.ImageTopX+(snake.x-snake.x),snake.ImageTopY+snake.y+(snake.height/2-snake.y))){
snake.death=1;
}
}
else if(snake.direction==1){
if(IsTouch(lpDDSBack,snake.ImageTopX+(snake.x+snake.width-snake.x),snake.ImageTopY+(snake.y+snake.height/2-snake.y))){
snake.death=1;
}
}
else if(snake.direction==2){
if(IsTouch(IpDDSBack,snake.ImageTopX+(snake.x+snake.width/2-snake.x),fish.ImageTopYL+(snake.y-snake.y))){
snake.death=1;
}
}
else if(snake.direction==3){
if(IsTouch(IpDDSBack,snake.ImageTopX+(snake.x+snake.width/2-snake.x),snake.ImageTopY+(snake.y+snake.height-snake.y))){
snake.death=1;
}
}
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
void FishInWater(){
if(water.exist==0){
while(!(water.height=RandEx(5)*21*(WaterNumber+1))||water.height>=703);
water.width=RandEx(10)*7*(WaterNumber+1);
water.WaterSize=2;
water.exist=1;
}
if(PictureNumber>5){
PictureNumber=RandEx(5);
}
CopyBlt(lpDDSBuffer,IpDDSBack,0,0,0,0,1024,768);
if(!(FishTimer%4)){
if(fish.IsStop==1){
fish.FishSpeed--;
if(fish.FishSpeed<=1)fish.FishSpeed=1;
FishMoveNumber=6+fish.Direction;
}
else{
FishMoveNumber++;
fish.FishSpeed++;
}
if(fish.x<=2){
fish.Direction=6;
FishMoveNumber+=fish.Direction;
}
else if(fish.x>=650){
FishMoveNumber-=fish.Direction;
fish.Direction=0;
}
if(FishMoveNumber>11+fish.Direction)FishMoveNumber=6+fish.Direction;
if(fish.FishSpeed>=5)fish.FishSpeed=5;
else if(fish.FishSpeed<=0)fish.FishSpeed=0;
if(fish.Direction==0){
fish.x-=fish.FishSpeed;
}
else{
fish.x+=fish.FishSpeed;
}
if(!(FishTimer%160)){
if(RandEx(99)>50)FishUpDown=1;
else FishUpDown=0;
}
if(FishUpDown==0){
fish.y--;
if(fish.y<148)fish.y=148;
}
else{
fish.y++;
if(fish.y>678)fish.y=678;
}
}
if(fish.IsStop==0)
if(RandEx(100)<1){
fish.IsStop=1;
}
for(int i=0;i<=9;i++){
if(water.exist==1){
if(water.height<=148){
water.exist=0;
}
else if(!(WaterPointTimer%5)){
if(water.height<700&&water.height>600)water.width-=10;
else if(water.height<500&&water.height>400)water.width-=7;
else if(water.height<300&&water.height>200)water.width-=5;
else {
water.width+=10;
water.WaterSize++;
}
water.height-=15;
}
DrawWater(i);
}
}
if(fish.Direction==0)AlphaBlt(IpDDSBack,fish.x,fish.y,fish.ImageTopXL,fish.ImageTopYL,fish.ImageButtomXL,fish.ImageButtomYL);
else AlphaBlt(IpDDSBack,fish.x,fish.y,fish.ImageTopXR,fish.ImageTopYR,fish.ImageButtomXR,fish.ImageButtomYR);
if(!(WaterTimer%8))PictureNumber++;
if(fish.IsStop==1)if(RandEx(100)<5)fish.IsStop=0;
WaterTimer++;
FishTimer++;
WaterPointTimer++;
}
void DrawWater(int i){
lpDDSBuffer->GetDC(&hdc);
SelectObject(hdc,hpen);
SelectObject(hdc,hbrush1);
Ellipse(hdc,water.width,water.height,water.width+water.WaterSize,water.height+water.WaterSize);
SelectObject(hdc,hbrush2);
Ellipse(hdc,water.width+water.WaterSize/4,water.height+water.WaterSize/4,water.width+water.WaterSize/2,water.height+water.WaterSize/2);
lpDDSBuffer->ReleaseDC(hdc);
}
void Light(int CircleHalfLong,int CircleX,int CircleY,int Bright){
for(int H=0;H<768;H++)
for(int W=0;W<1024;W++){
int l=((H-CircleY)*(H-CircleY)+(W-CircleX)*(W-CircleX))/(CircleHalfLong*CircleHalfLong);
if(l<=1)
BaseLightTable=Bright/3;
else BaseLightTable=Bright;
}
ZeroMemory(&ddsd,sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
lpDDSBuffer->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL);
_int8 *lPsrc=(_int8*)ddsd.lpSurface;
_int8 *LightTable=(_int8*)BaseLightTable;
_asm{
mov eax,lPsrc
mov ebx,LightTable
mov edi,768
FirstLoop:
push eax
mov esi,512
SecondLoop:
movq mm0,
movq mm1,
punpcklbw mm1,mm1
punpcklbw mm1,mm1
psubusb mm0,mm1
movq ,mm0
add eax,8
add ebx,2
dec esi
jnz SecondLoop
pop eax
add eax,ddsd.lPitch
dec edi
jnz FirstLoop
emms
}
lpDDSBuffer->Unlock(NULL);
}
贴不下了!
你逼我的! 最初由 LALA 发表
楼主,我听说改神是自己做金手指的
你也做个给我们吧,那东西我感觉很复杂,一直不太会用,你这么厉害,能在功能不缩水的情况下简化一下么?
我不是什么改神!
我的兴趣主要是怎样做好的画面(现研究3d) 那您给我们看您的演示吧
您不是说要画面好吗?
http://allgames.gamesh.com/srw/down/pic/gpic/0093/0093-24.jpg 最初由 fromhell 发表
我不是什么改神!
我的兴趣主要是怎样做好的画面(现研究3d)...
023 奇怪了 谁说过你是改神了 最初由 fromhell 发表
我不是什么改神!
我的兴趣主要是怎样做好的画面(现研究3d)...
……
我知道你不是改神,改神是跟你程序大战的那位
古话说:知己知彼,百战不殆…… 最初由 fromhell 发表
我不是什么改神!
我的兴趣主要是怎样做好的画面(现研究3d)...
楼主画一个前凸后翘腿子长的MM给我瞻仰下行不行
我快睡着了 最初由 fromhell 发表
我不是什么改神!
我的兴趣主要是怎样做好的画面(现研究3d)... 那您为什么还有兴趣陪我们一帮小P孩讨论一个垃圾游戏中基本得不能再基本的问题<bgsound src=http://www.12101.com/john/midi/aisenshi.mid loop=-1> 那本书是带盘的,里面有无数程序代码
马上下课了,晚上再来看 那你也要给我画才行呀! 最初由 Pluto_Shi 发表
那本书是带盘的,里面有无数程序代码
马上下课了,晚上再来看
好吧,那我的都是抄的,行了吧!! 最初由 fromhell 发表
那你也要给我画才行呀!
救命啊....我用意念制止了你么?
难道我的NT力如此强? 最初由 john 发表
那您为什么还有兴趣陪我们一帮小P孩讨论一个垃圾游戏中基本得不能再基本的问题<bgsound src=http://www.12101.com/john/midi/aisenshi.mid loop=-1>...
兴趣不能多样吗? 最初由 fromhell 发表
好吧,那我的都是抄的,行了吧!!
行了
不用谢