導航:首頁 > 源碼編譯 > 游戲源碼編譯

游戲源碼編譯

發布時間:2022-02-13 19:12:06

A. 誰能給我一個C++或java寫的游戲源碼

c的可以嗎?
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
int gamespeed=50000;/*游戲速度自己調整*/
struct Food
{
int x;/*食物的橫坐標*/
int y;/*食物的縱坐標*/
int yes;/*判斷是否要出現食物的變數*/
}food;/*食物的結構體*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的節數*/
int direction;/*蛇移動方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;
void Init(void);/*圖形驅動*/
void Close(void);/*圖形結束*/
void DrawK(void);/*開始畫面*/
void GameOver(void);/*結束游戲*/
void GamePlay(void);/*玩游戲具體過程*/
void PrScore(void);/*輸出成績*/
/*主函數*/
void main(void)
{
Init();/*圖形驅動*/
DrawK();/*開始畫面*/
GamePlay();/*玩游戲具體過程*/
Close();/*圖形結束*/
}
/*圖形驅動*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
/*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍牆*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/
for(i=50;i<=600;i+=10)/*畫圍牆*/
{
rectangle(i,40,i+10,49); /*上邊*/
rectangle(i,451,i+10,460);/*下邊*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*左邊*/
rectangle(601,i,610,i+10);/*右邊*/
}
}
/*玩游戲具體過程*/
void GamePlay(void)
{
randomize();/*隨機數發生器*/
food.yes=1;/*1表示需要出現新食物,0表示已經存在食物*/
snake.life=0;/*活著*/
snake.direction=1;/*方嚮往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇頭*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*節數*/
PrScore();/*輸出得分*/
while(1)/*可以重復玩游戲,壓ESC鍵結束*/
{
while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/
{
if(food.yes==1)/*需要出現新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物隨機出現後必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*畫面上有食物了*/
}
if(food.yes==0)/*畫面上有食物了就要顯示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每個環節往前移動,也就是貪吃蛇的關鍵演算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2: snake.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)/*從蛇的第四節開始判斷是否撞到自己了,因為蛇頭為兩節,第三節不可能拐過來*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*顯示失敗*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*蛇是否撞到牆壁*/
{
GameOver();/*本次游戲結束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上兩種判斷以後,如果蛇死就跳出內循環,重新開始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以後*/
{
setcolor(0);/*把畫面上的食物東西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一節先放在看不見的位置,下次循環就取前一節的位置*/
snake.node++;/*蛇的身體長一節*/
food.yes=1;/*畫面上需要出現新的食物*/
score+=10;
PrScore();/*輸出新得分*/
}
setcolor(4);/*畫出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最後一節*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循環*/
break;
key=bioskey(0);/*接收按鍵*/
if(key==ESC)/*按ESC鍵退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判斷是否往相反的方向移動*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戲結束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*輸出成績*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*圖形結束*/
void Close(void)
{
getch();
closegraph();
}

B. Unity打包好的游戲可以反編譯得到源碼和資源嗎

在Unity3D中,代碼會編譯到Assembly-CSharp.dll。基於以上兩點,代碼的保護有以下兩種:
第一種是對代碼進行混淆,諸如混淆軟體CodeGuard、CryptoObfuscator、de4dot
第二種是對Assembly-CSharp.dll進行加密後,重新對mono進行編譯。
Virbox Protector直接進行加殼後,無需手動編譯mono,能防止反編譯。

C. sourceforge下載到的游戲源代碼 不會編譯 makefile

一般來講,這些程序都可以在linux下編譯,如果現在windows下編譯,可下一個windows的linux模擬環境,如cygwin.
看目錄下有沒有configure的文件,先執行他,根據你的計算機配置,生成makefile,再執行make即可。

D. 求c語言編譯小游戲的代碼,比如掃雷原代碼等

#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFTPRESS 0xff01
#define LEFTCLICK 0xff10
#define LEFTDRAG 0xff19
#define MOUSEMOVE 0xff08
struct
{
int num;/*格子當前處於什麼狀態,1有雷,0已經顯示過數字或者空白格子*/
int roundnum;/*統計格子周圍有多少雷*/
int flag;/*右鍵按下顯示紅旗的標志,0沒有紅旗標志,1有紅旗標志*/
}Mine[10][10];
int gameAGAIN=0;/*是否重來的變數*/
int gamePLAY=0;/*是否是第一次玩游戲的標志*/
int mineNUM;/*統計處理過的格子數*/
char randmineNUM[3];/*顯示數字的字元串*/
int Keystate;
int MouseExist;
int MouseButton;
int MouseX;
int MouseY;
void Init(void);/*圖形驅動*/
void MouseOn(void);/*滑鼠游標顯示*/
void MouseOff(void);/*滑鼠游標隱藏*/
void MouseSetXY(int,int);/*設置當前位置*/
int LeftPress(void);/*左鍵按下*/
int RightPress(void);/*滑鼠右鍵按下*/
void MouseGetXY(void);/*得到當前位置*/
void Control(void);/*游戲開始,重新,關閉*/
void GameBegain(void);/*游戲開始畫面*/
void DrawSmile(void);/*畫笑臉*/
void DrawRedflag(int,int);/*顯示紅旗*/
void DrawEmpty(int,int,int,int);/*兩種空格子的顯示*/
void GameOver(void);/*游戲結束*/
void GameWin(void);/*顯示勝利*/
int MineStatistics(int,int);/*統計每個格子周圍的雷數*/
int ShowWhite(int,int);/*顯示無雷區的空白部分*/
void GamePlay(void);/*游戲過程*/
void Close(void);/*圖形關閉*/
void main(void)
{
Init();
Control();
Close();
}
void Init(void)/*圖形開始*/
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
}
void Close(void)/*圖形關閉*/
{
closegraph();
}
void MouseOn(void)/*滑鼠游標顯示*/
{
_AX=0x01;
geninterrupt(0x33);
}
void MouseOff(void)/*滑鼠游標隱藏*/
{
_AX=0x02;
geninterrupt(0x33);
}
void MouseSetXY(int x,int y)/*設置當前位置*/
{
_CX=x;
_DX=y;
_AX=0x04;
geninterrupt(0x33);
}
int LeftPress(void)/*滑鼠左鍵按下*/
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&1);
}
int RightPress(void)/*滑鼠右鍵按下*/
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&2);
}
void MouseGetXY(void)/*得到當前位置*/
{
_AX=0x03;
geninterrupt(0x33);
MouseX=_CX;
MouseY=_DX;
}
void Control(void)/*游戲開始,重新,關閉*/
{
int gameFLAG=1;/*游戲失敗後判斷是否重新開始的標志*/
while(1)
{
if(gameFLAG)/*游戲失敗後沒判斷出重新開始或者退出遊戲的話就繼續判斷*/
{
GameBegain(); /*游戲初始畫面*/
GamePlay();/*具體游戲*/
if(gameAGAIN==1)/*游戲中重新開始*/
{
gameAGAIN=0;
continue;
}
}
MouseOn();
gameFLAG=0;
if(LeftPress())/*判斷是否重新開始*/
{
MouseGetXY();
if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)
{
gameFLAG=1;
continue;
}
}
if(kbhit())/*判斷是否按鍵退出*/
break;
}
MouseOff();
}
void DrawSmile(void)/*畫笑臉*/
{
setfillstyle(SOLID_FILL,YELLOW);
fillellipse(290,75,10,10);
setcolor(YELLOW);
setfillstyle(SOLID_FILL,BLACK);/*眼睛*/
fillellipse(285,75,2,2);
fillellipse(295,75,2,2);
setcolor(BLACK);/*嘴巴*/
bar(287,80,293,81);
}
void DrawRedflag(int i,int j)/*顯示紅旗*/
{
setcolor(7);
setfillstyle(SOLID_FILL,RED);
bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5);
setcolor(BLACK);
line(198+j*20,95+i*20,198+j*20,95+i*20+10);
}
void DrawEmpty(int i,int j,int mode,int color)/*兩種空格子的顯示*/
{
setcolor(color);
setfillstyle(SOLID_FILL,color);
if(mode==0)/*沒有單擊過的大格子*/
bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8);
else
if(mode==1)/*單擊過後顯示空白的小格子*/
bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);
}
void GameBegain(void)/*游戲開始畫面*/
{
int i,j;
cleardevice();
if(gamePLAY!=1)
{
MouseSetXY(290,70); /*滑鼠一開始的位置,並作為它的初始坐標*/
MouseX=290;
MouseY=70;
}
gamePLAY=1;/*下次按重新開始的話滑鼠不重新初始化*/
mineNUM=0;
setfillstyle(SOLID_FILL,7);
bar(190,60,390,290);
for(i=0;i<10;i++)/*畫格子*/
for(j=0;j<10;j++)
DrawEmpty(i,j,0,8);
setcolor(7);
DrawSmile();/*畫臉*/
randomize();__page_break__
for(i=0;i<10;i++)/*100個格子隨機賦值有沒有地雷*/
for(j=0;j<10;j++)
{
Mine[i][j].num=random(8);/*如果隨機數的結果是1表示這個格子有地雷*/
if(Mine[i][j].num==1)
mineNUM++;/*現有雷數加1*/
else
Mine[i][j].num=2;
Mine[i][j].flag=0;/*表示沒紅旗標志*/
}
sprintf(randmineNUM,"%d",mineNUM); /*顯示這次總共有多少雷數*/
setcolor(1);
settextstyle(0,0,2);
outtextxy(210,70,randmineNUM);
mineNUM=100-mineNUM;/*變數取空白格數量*/
MouseOn();
}
void GameOver(void)/*游戲結束畫面*/
{
int i,j;
setcolor(0);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(Mine[i][j].num==1)/*顯示所有的地雷*/
{
DrawEmpty(i,j,0,RED);
setfillstyle(SOLID_FILL,BLACK);
fillellipse(200+j*20,100+i*20,7,7);
}
}
void GameWin(void)/*顯示勝利*/
{
setcolor(11);
settextstyle(0,0,2);
outtextxy(230,30,"YOU WIN!");
}
int MineStatistics(int i,int j)/*統計每個格子周圍的雷數*/
{
int nNUM=0;
if(i==0&&j==0)/*左上角格子的統計*/
{
if(Mine[0][1].num==1)
nNUM++;
if(Mine[1][0].num==1)
nNUM++;
if(Mine[1][1].num==1)
nNUM++;
}
else
if(i==0&&j==9)/*右上角格子的統計*/
{
if(Mine[0][8].num==1)
nNUM++;
if(Mine[1][9].num==1)
nNUM++;
if(Mine[1][8].num==1)
nNUM++;
}
else
if(i==9&&j==0)/*左下角格子的統計*/
{
if(Mine[8][0].num==1)
nNUM++;
if(Mine[9][1].num==1)
nNUM++;
if(Mine[8][1].num==1)
nNUM++;
}
else
if(i==9&&j==9)/*右下角格子的統計*/
{
if(Mine[9][8].num==1)
nNUM++;
if(Mine[8][9].num==1)
nNUM++;
if(Mine[8][8].num==1)
nNUM++;
}
else if(j==0)/*左邊第一列格子的統計*/
{
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i-1][j+1].num==1)
nNUM++;
if(Mine[i+1][j+1].num==1)
nNUM++;
}
else if(j==9)/*右邊第一列格子的統計*/
{
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i-1][j-1].num==1)
nNUM++;
if(Mine[i+1][j-1].num==1)
nNUM++;
}
else if(i==0)/*第一行格子的統計*/
{
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i+1][j-1].num==1)
nNUM++;
if(Mine[i+1][j+1].num==1)
nNUM++;
}
else if(i==9)/*最後一行格子的統計*/
{
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i-1][j-1].num==1)
nNUM++;
if(Mine[i-1][j+1].num==1)
nNUM++;
}
else/*普通格子的統計*/
{
if(Mine[i-1][j].num==1)
nNUM++;
if(Mine[i-1][j+1].num==1)
nNUM++;
if(Mine[i][j+1].num==1)
nNUM++;
if(Mine[i+1][j+1].num==1)
nNUM++;
if(Mine[i+1][j].num==1)
nNUM++;
if(Mine[i+1][j-1].num==1)
nNUM++;
if(Mine[i][j-1].num==1)
nNUM++;
if(Mine[i-1][j-1].num==1)
nNUM++;
}__page_break__
return(nNUM);/*把格子周圍一共有多少雷數的統計結果返回*/
}
int ShowWhite(int i,int j)/*顯示無雷區的空白部分*/
{
if(Mine[i][j].flag==1||Mine[i][j].num==0)/*如果有紅旗或該格處理過就不對該格進行任何判斷*/
return;
mineNUM--;/*顯示過數字或者空格的格子就表示多處理了一個格子,當所有格子都處理過了表示勝利*/
if(Mine[i][j].roundnum==0&&Mine[i][j].num!=1)/*顯示空格*/
{
DrawEmpty(i,j,1,7);
Mine[i][j].num=0;
}
else
if(Mine[i][j].roundnum!=0)/*輸出雷數*/
{
DrawEmpty(i,j,0,8);
sprintf(randmineNUM,"%d",Mine[i][j].roundnum);
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
Mine[i][j].num=0;/*已經輸出雷數的格子用0表示已經用過這個格子*/
return ;
}
/*8個方向遞歸顯示所有的空白格子*/
if(i!=0&&Mine[i-1][j].num!=1)
ShowWhite(i-1,j);
if(i!=0&&j!=9&&Mine[i-1][j+1].num!=1)
ShowWhite(i-1,j+1);
if(j!=9&&Mine[i][j+1].num!=1)
ShowWhite(i,j+1);
if(j!=9&&i!=9&&Mine[i+1][j+1].num!=1)
ShowWhite(i+1,j+1);
if(i!=9&&Mine[i+1][j].num!=1)
ShowWhite(i+1,j);
if(i!=9&&j!=0&&Mine[i+1][j-1].num!=1)
ShowWhite(i+1,j-1);
if(j!=0&&Mine[i][j-1].num!=1)
ShowWhite(i,j-1);
if(i!=0&&j!=0&&Mine[i-1][j-1].num!=1)
ShowWhite(i-1,j-1);
}
void GamePlay(void)/*游戲過程*/
{
int i,j,Num;/*Num用來接收統計函數返回一個格子周圍有多少地雷*/
for(i=0;i<10;i++)
for(j=0;j<10;j++)
Mine[i][j].roundnum=MineStatistics(i,j);/*統計每個格子周圍有多少地雷*/
while(!kbhit())
{
if(LeftPress())/*滑鼠左鍵盤按下*/
{
MouseGetXY();
if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)/*重新來*/
{
MouseOff();
gameAGAIN=1;
break;
}
if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)/*當前滑鼠位置在格子范圍內*/
{
j=(MouseX-190)/20;/*x坐標*/
i=(MouseY-90)/20;/*y坐標*/
if(Mine[i][j].flag==1)/*如果格子有紅旗則左鍵無效*/
continue;
if(Mine[i][j].num!=0)/*如果格子沒有處理過*/
{
if(Mine[i][j].num==1)/*滑鼠按下的格子是地雷*/
{
MouseOff();
GameOver();/*游戲失敗*/
break;
}
else/*滑鼠按下的格子不是地雷*/
{
MouseOff();
Num=MineStatistics(i,j);
if(Num==0)/*周圍沒地雷就用遞歸演算法來顯示空白格子*/
ShowWhite(i,j);
else/*按下格子周圍有地雷*/
{
sprintf(randmineNUM,"%d",Num);/*輸出當前格子周圍的雷數*/
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
mineNUM--;
}
MouseOn();
Mine[i][j].num=0;/*點過的格子周圍雷數的數字變為0表示這個格子已經用過*/
if(mineNUM<1)/*勝利了*/
{
GameWin();
break;
}
}
}
}
}
if(RightPress())/*滑鼠右鍵鍵盤按下*/
{
MouseGetXY();
if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)/*當前滑鼠位置在格子范圍內*/
{
j=(MouseX-190)/20;/*x坐標*/
i=(MouseY-90)/20;/*y坐標*/
MouseOff();
if(Mine[i][j].flag==0&&Mine[i][j].num!=0)/*本來沒紅旗現在顯示紅旗*/
{
DrawRedflag(i,j);
Mine[i][j].flag=1;
}
else
if(Mine[i][j].flag==1)/*有紅旗標志再按右鍵就紅旗消失*/
{
DrawEmpty(i,j,0,8);
Mine[i][j].flag=0;
}
}
MouseOn();
sleep(1);
}
}
}

E. 網上的小游戲源代碼 要怎麼樣在編譯器上運行起來

看你的小游戲是基於什麼開發的
不同的源碼需要用不同的編譯器加環境的
有Java的 有C的 有C++的 有flash的 都不一樣的

F. 有游戲源碼文件,怎麼把它變成可以玩的游戲

游戲源碼是完整的么,什麼語言寫的,相應的搭建環境即可,要編譯的得編譯,是app版,還是h5,不會的話可以幫代搭建

G. 跪求能在c++6.0編譯的貪食蛇、俄羅斯方塊等游戲的C++源代碼!!!

/******************************************************************
貪食蛇 Preview
此版本貪吃蛇用蛇的方塊是集合用的是數組
蛇移動是以Sleep()阻斷進程實現的
故蛇移動看似較為卡頓,且數組插入數據效率較低,
故操作體驗十分一般
*******************************************************************/
#include<windows.h>
#include <time.h>

#pragma comment(lib,"winmm.lib")

#define LENGTH 40 //游戲場地的寬
#define WIDTH 10 //組成蛇的的正方形的邊長
#define RANGE 50 //游戲場地與客戶去之間間隔
#define SNAKE_COLOR RGB(255,0,0) //蛇的顏色
#define BK_COLOR RGB(204,232,207) //窗體背景色
#define NO_SNAKE 0
#define HAS_SNAKE 1
#define STEP 2
#define MAKECOOR(x) (x)*WIDTH //把flags數組的下標映射為坐標

typedef struct
{
int x;
int y;
int flag;
} GRID;//蛇的結構

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
void MakePartSnake(int,int,int,GRID *); //為蛇身增加或設置一個方塊
void MoveSnake(HWND); //移動蛇
void MakeFood(GRID *food); //製造隨機方塊
void initializer(); //初始化游戲
void Manager();

TCHAR szAppName[] = TEXT("Gluttony Snake");
int flags[LENGTH][LENGTH]; //游戲區域所有方塊的狀態標記
RECT playground; //游戲場地
GRID *snake = NULL; //蛇所在位置數組
GRID *food = NULL; //食物對象
static int MAX_LENGTH = 0;//默認蛇分配的最大長度(可變的)
int snake_len = 0;
int direct = 0;
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MSG msg;
HWND hwnd;
WNDCLASS wndclass;
while(TRUE)
{
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground=CreateSolidBrush(RGB(203,202,201));
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WndProc;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.style = CS_VREDRAW | CS_HREDRAW;

if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("Register class failed!! Retry??"),szAppName,0);
return 0;
}
break;
}
hwnd = CreateWindow(szAppName,
TEXT("Gluttony Snake Preview V1.0.1"),
WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME ^ WS_MINIMIZEBOX ^ WS_MAXIMIZEBOX,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,NULL,
hInstance,
NULL);

ShowWindow(hwnd,SW_NORMAL);
UpdateWindow(hwnd);
while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
MoveSnake(hwnd);
}
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
HBRUSH hBrush;
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;

case WM_CREATE:
//PlaySound(TEXT("HG.wav"),NULL ,SND_ASYNC | SND_LOOP);//播放游戲音樂;
initializer();
MoveWindow(hwnd,RANGE * 2,RANGE * 2,WIDTH * LENGTH + RANGE * 3,WIDTH * LENGTH + RANGE * 3,TRUE);
return 0;
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT:
if(direct != VK_RIGHT)
direct = VK_LEFT;
break;
case VK_RIGHT:
if(direct != VK_LEFT)
direct = VK_RIGHT;
break;
case VK_UP:
if(direct != VK_DOWN)
direct = VK_UP;
break;
case VK_DOWN:
if(direct != VK_UP)
direct = VK_DOWN;
break;
default:
break;
}
return 0;

case WM_PAINT:
for(int i = 0; i != snake_len; ++i)
{
flags[(snake + i)->x][(snake + i)->y] = (snake + i)->flag;
}
hdc = BeginPaint(hwnd,&ps);
SetViewportOrgEx(hdc,RANGE/2,RANGE,NULL);
hBrush = CreateSolidBrush(BK_COLOR);
SelectObject(hdc,hBrush);
Rectangle(hdc,playground.left,playground.top,playground.right,playground.bottom);
DeleteObject(hBrush);
hBrush = CreateSolidBrush(SNAKE_COLOR);
SelectObject(hdc,hBrush);
for(int i = 0; i != LENGTH;++i)
{
for(int j = 0; j != LENGTH;++j)
{
if(flags[i][j] == HAS_SNAKE)
{
Rectangle(hdc,MAKECOOR(i),MAKECOOR(j),MAKECOOR(i+1),MAKECOOR(j+1));
}
}
}
DeleteObject(hBrush);
EndPaint(hwnd,&ps);
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
//////////////////////////初始化游戲各個參數////////////////////////////////////////////////////////////
void initializer()
{
if(snake != NULL)
free(snake);
if(food != NULL)
free(food);
snake_len = 3; //蛇的初始長度為3
direct = VK_RIGHT; //蛇的初始方向為向右
MAX_LENGTH = 100; //蛇默認最初分配最大長度為20
food = (GRID *)calloc(1,sizeof(GRID));//分配儲存food的內存
snake = (GRID *)calloc(MAX_LENGTH,sizeof(GRID));//分配儲存蛇的內存
/*************初始化游戲場地*******************/
playground.left = 0;
playground.top = 0;
playground.right = WIDTH * LENGTH;
playground.bottom = WIDTH * LENGTH;
/**************初始化游戲場地********************/

for(int i = 0 ;i < LENGTH;++i)
{
for(int j = 0; j < LENGTH;++j)
{
flags[i][j] = NO_SNAKE;
}
}
for(int i = 0; i != snake_len;++i)
{
MakePartSnake(LENGTH / 2 + 2 - i,LENGTH / 2,HAS_SNAKE,(snake + i));
}///初始化蛇
MakeFood(food);///產生food
}

void MakePartSnake(int x,int y,int flag,GRID * snake)
{
snake->x = x;
snake->y = y;
snake->flag = flag;
}
////////////////////////////////////////////////////////////////////////////////

//////////////////控制蛇的移動///////////////////////
void MoveSnake(HWND hwnd)
{
Manager();
flags[(snake + snake_len - 1)->x][(snake + snake_len - 1)->y] = NO_SNAKE;//把蛇的尾部去除(表現為蛇移動一格)

for(int i = snake_len - 1; i > 0;--i)
{
(snake+i)->x = (snake + i -1)->x;
(snake+i)->y = (snake + i -1)->y;
}
if(direct == VK_LEFT)
{
snake->x -= 1;
}
if(direct == VK_RIGHT)
{
snake->x += 1;
}
if(direct == VK_UP)
{
snake->y -= 1;
}
if(direct == VK_DOWN)
{
snake->y += 1;
}
InvalidateRect(hwnd,NULL,FALSE);
Sleep(200);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////通過隨機生成food
void MakeFood(GRID *food)
{
srand((unsigned) time(NULL));
food->x = rand() % LENGTH;
food->y = rand() % LENGTH;
food->flag = HAS_SNAKE;
flags[food->x][food->y] = food->flag;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////游戲規則的映射及內存的處理///////////////////////////////////////////////////
void Manager()
{
if(snake_len >= MAX_LENGTH - 2)
{
MAX_LENGTH += STEP;
snake = (GRID *)realloc(snake,MAX_LENGTH * sizeof(GRID));
}//若蛇的長度數組snake將超過所分配的內存就再次擴充分配

if(snake->x < 0 || snake->x >= LENGTH || snake->y < 0 || snake->y >= LENGTH)
{
MessageBox(NULL,TEXT("Game Over!!"),szAppName,0);
initializer();
return;
}///判斷蛇是否碰到邊界

for(int i = 4;i < snake_len;++i)
{
if(snake->x == (snake + i)->x && snake->y == (snake + i)->y)
{
MessageBox(NULL,TEXT("Game Over!!"),szAppName,0);
initializer();
return;
}
}////判斷蛇是否碰到自身

if(food->x == snake->x && food->y == snake->y)
{
MakePartSnake(
(snake + snake_len - 1)->x
,(snake + snake_len - 1)->y
,HAS_SNAKE
,snake + snake_len
);
++snake_len;
MakeFood(food);
}///判斷蛇是否吃到food
}
////////////////////////////////////////////////////////////////////////////////

H. java代碼,為什麼我寫的這個游戲編譯不通過

代碼沒看出毛病,你用的什麼編譯器,建議換個編譯器吧!

I. 猜數游戲的C語言編譯代碼

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
time_t t;
int a[4];
char q[5]="1234";
void youxizuorenjieshao()
{
void zhuye();
system("cls");
printf("\n\n\n");
printf(" 游戲製作人介紹\n");
printf(" 姓名 :蔡硯剛\n");
printf(" 年齡 :18\n");
printf(" 性別 :男\n");
printf(" 出生年月(陽歷):1989年12月4日\n");
printf(" 出生年月(陰歷):1989年十一月初七\n");
printf(" 學校 :浙江工商大學\n");
printf(" 畢業學校 :安丘八中\n");
printf(" 出生地 :山東濰坊安丘\n");
printf(" 班級 :軟體0701\n");
printf(" 院系 :計算機與信息工程學院\n");
printf(" 寢室 :錢江灣生活區41#518\n");
printf(" 電話 :15858263646\n");
printf(" 這就是對菜鳥的介紹:你想評價一下他的游戲么?\n");
printf(" 返回主菜單按任意鍵:");
getchar();getchar();
zhuye();

}
void youxiguize()
{
void zhuye();
system("cls");
printf("\n\n\n\n");
printf(" 游戲介紹:\n");
printf(" 1輸入一個各位上數字互不相等的四位數\n");
printf(" 2如果你輸入的數字中有n個相同的數字返回nA\n");
printf(" 3如果你輸入的數字中有m個相同且位置相同返回mB\n");
printf(" 4當返回值是4A4B時即為猜中數字\n");
printf(" 5還可以提前偷窺數字但要輸入密碼\n");
printf(" 現在你已知道游戲規則,那麼趕快玩魅力小菜猜數字游戲吧!\n");
printf(" 按任意鍵返回主采單:");
getchar();getchar();
zhuye();
}
void suijishu()
{
a[0]=rand() %10;
while(1){
a[1]=rand()%10;
if(a[1]!=a[0]) break;
}
while(1){
a[2]=rand()%10;
if((a[2]!=a[0])&&(a[2]!=a[1])) break;
}
while(2){
a[3]=rand()%10;
if((a[3]!=a[0])&&(a[3]!=a[1])&&(a[3]!=a[2])) break;
}
}
void xiaofanhui()
{
int n;
void panan();
void youxi();
void zhuye();
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf(" 現在你已經成功完成游戲\n");
printf(" 按1繼續游戲\n");
printf(" 按2返回主菜單\n");
printf(" 按3返回上一級\n");
printf(" 請選擇:");
scanf("%d",&n);
switch(n){
case 1:suijishu();printf(" 請輸入所猜數字:");
panan();break;
case 2:zhuye();break;
case 3:youxi();break;
default:system("cls");printf(" 這個功能碼不正確\n");break;
}
}
void panan()
{
long n;
int i,j,k,l;
char b[5];
j=0;l=0;
scanf("%s",b);
for(i=0;i<4;i++)
b[i]=b[i]-'0';
for(i=0;i<4;i++) {
if(a[i]==b[i]) j++;
for(k=0;k<4;k++)
if(a[i]==b[k]){ l++;break;}
}
if((j==4)&&(l==4)){
printf(" 4A4B\n");
printf(" 恭喜你,乾的不錯,想記入排行榜么?");
for(n=1;n<=300000000;n++);
xiaofanhui();
}
else{
printf(" %dA%dB",l,j);
printf("請輸入所猜數字:");
panan();
}
}
void print()
{
printf("\n\n\n\n\n\n\n");
printf(" 魅力小菜猜數字游戲現在開始\n");
printf(" 你做好准備了么?\n");
printf(" 如果你用最少的次數猜中的話,還有望進入小菜排行榜呢\n");
printf(" 請輸入所猜數字:");panan();
}
void mima()
{
int i,j;
char p[5];
void youxi();
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf(" 你可真偷懶!偷懶需要密碼吆!你知道密碼么?\n");
printf(" 請輸入密碼:");
for(i=1;i<3;i++){
scanf("%s",p);
if(strcmp(p,q)==0){ system("cls"); printf("偷窺答案是:%d%d%d%d\n",a[0],a[1],a[2],a[3]);print();}
else{ printf(" 密碼錯誤\n");
printf(" 請輸入密碼:");
}
}
scanf("%s",p);
if(strcmp(p,q)==0){ system("cls"); printf("偷窺答案是:%d%d%d%d\n",a[0],a[1],a[2],a[3]);print();}
else printf(" 密碼錯誤\n");
printf(" 你已輸入3次密碼還錯誤,看來偷雞不成蝕把米\n");
printf(" 還是本分點玩游戲吧:");
for(j=1;j<=500000000;j++);
youxi();
}
void youxi()
{
int m;
system("cls");
suijishu();
printf("\n\n\n\n\n\n\n\n");
printf(" 魅力無限的猜數字游戲現在開始:\n");
printf(" 按1現在開始游戲\n");
printf(" 按2提前偷窺(需要4位密碼吆)\n");
printf(" 請輸入:");
scanf("%d",&m);
switch(m){
case 1:system("cls");print();panan();break;
case 2:mima();break;
}
}
void paihang()
{
char ch;
FILE *fp;
void zhuye();

if((fp=fopen("paihangbang.txt","r"))==NULL){
printf("無信息\n");
}
while(!feof(fp)){
ch=fgetc(fp);
putchar(ch);
}
if(fclose(fp)){
printf("不能關閉文件\n");
}
printf("\n看到了吧,你想成為其中一員嗎?趕快來玩吧!小菜給你無限驚喜!返回主菜單請按任意鍵");
getchar();getchar();
zhuye();
}
void zhuyexuanze()
{
int n;
long i;
void zhuye();
scanf("%d",&n);
switch(n){
case 1:youxi();break;
case 2:system("cls"); paihang();break;
case 3:youxiguize();break;
case 4:youxizuorenjieshao();break;
case 5:break;
default:printf(" 您輸入的功能碼有誤,請重新輸入:\n");
for(i=1;i<=300000000;i++);
system("cls"); zhuye();
}
}
void zhuye()
{
system("cls");
printf("$$$$$$$哈!哈!累了吧,無聊了吧!玩一下小菜猜數字游戲八!¥¥¥¥¥¥¥¥\n");
printf(" 製作人:蔡硯剛");
printf("\n\n\n");
printf(" 小菜猜數字\n\n\n");
printf(" 下面玩一下吧!\n");
printf(" 按下以下數字選擇你所要的功能:\n");
printf(" 1開始游戲\n");
printf(" 2查看排行榜\n");
printf(" 3游戲規則介紹\n");
printf(" 4製作人介紹\n");
printf(" 5退出遊戲\n\n\n\n\n");
printf(" 請輸入你所要選擇的功能:");
zhuyexuanze();
}
main()
{
srand((unsigned) time(&t));
zhuye();

閱讀全文

與游戲源碼編譯相關的資料

熱點內容
支付寶賬單文件如何解壓 瀏覽:857
查看內核版本命令 瀏覽:954
w10加密盤驅動鎖死怎麼辦 瀏覽:944
全新雲伺服器價格對比 瀏覽:383
python為什麼去除了switch語句 瀏覽:54
二進制7到8的演算法 瀏覽:807
伺服器機櫃叫什麼名字 瀏覽:347
vue3源碼作者 瀏覽:829
app右下角標怎麼關 瀏覽:832
怎麼對一個盤加密碼 瀏覽:670
練習sql用什麼樣的伺服器 瀏覽:978
asp與php對比 瀏覽:645
php模除 瀏覽:254
android上傳圖片方式 瀏覽:886
華為視頻會議伺服器如何連接 瀏覽:224
phpfpm並發數 瀏覽:925
雲伺服器哪裡看 瀏覽:245
戴爾emc伺服器led怎麼拔出 瀏覽:794
程序員霸王 瀏覽:371
文件夾重合如何分開 瀏覽:163