當前位置:首頁 » 編程軟體 » 最簡單的游戲編程

最簡單的游戲編程

發布時間: 2023-03-25 12:21:09

❶ 求簡單短節的小游戲編程

#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <bios.h>
#define KEY_ESC 0x01
#define KEY_SPACE 0x39
#define KEY_UP 0x48
#define KEY_LEFT 0x4b
#define KEY_RIGHT 0x4d
#define KEY_DOWN 0x50
/*1石頭,2磚塊,3水,5老家,8玩家,9敵人*/
int map[20][20]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,2,2,2,2,0,0,2,2,2,2,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,2,0,0,2,0,1,1,1,1,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,1,
1,0,1,1,1,1,3,3,3,3,0,0,0,0,0,0,0,2,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,3,3,3,0,1,
1,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,3,3,3,1,1,1,1,1,1,1,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,2,2,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,
1,0,2,2,0,0,0,0,2,2,2,0,0,0,2,2,0,0,0,1,
1,0,0,0,0,0,0,8,2,5,2,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
struct f
{
int x;
int y;
int direction;
};
struct play
{
int x;/*行坐標*/
int y;/*列坐標*/
int direction;/*方向*/
struct f fire[5];/*5顆子彈*/
int score;/*分數*/
}Playone;
struct a
{
int x;
int y;
int color;
int direction;
int directiontwo;/*用來判斷走的路是否往返*/
int fireplay;/*是否攻擊的變數,隨機生成*/
struct f fire;
}amy[5];/*敵人的結構體,其實可以添加不同的顏色來表示不同種類的坦克*/
char key_state[128],key_pressed[128];
void Init();/*圖象驅動開始*/
void End();/*圖象驅動結束*/
void DrawMap();/*畫地圖*/
void DrawWater(int x,int y);/*畫水*/
void DrawBrick(int x,int y);/*畫磚*/
void DrawTone(int x,int y);/*畫石頭*/
void DrawHome(int x,int y);/*畫老家*/
void DrawBlack(int x,int y);/*去除內容*/
void DrawPlay(int x,int y);/*畫玩家*/
void DrawAmy(int x,int y,int i);/*畫敵人*/
void Score();/*輸出分數*/
void GamePlay();/*玩游戲過程*/
void GameOver();/*游戲失敗*/
void TimeDelay(unsigned long microsec); /*延時函數 傳入微秒數*/
int GetKey(int ScanCode);/*這里開始都是按鍵函數*/
void interrupt far (*OldInt9Handler)();
void far interrupt NewInt9();
void InstallKeyboard();
void ShutDownKeyboard();
void main(void)
{
Init();
DrawMap();
GamePlay();
End();
}
void TimeDelay(unsigned long microsec) /*延時函數 傳入微秒數*/
{
union REGS r;
r.h.ah=0x86;
r.x.cx=microsec>>16;
r.x.dx=microsec;
int86(0x15,&r,&r);
}
void Init()/*圖象驅動開始*/
{int gd=DETECT,gm;
initgraph(&gd,&gm,"d:\\tc\\tc");
cleardevice();
InstallKeyboard();
}
void End()/*圖象驅動結束*/
{
ShutDownKeyboard();
closegraph();
}
void DrawTone(int x,int y)/*畫石頭*/
{
setfillstyle(SOLID_FILL,7);
bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
}
void DrawWater(int x,int y)/*畫水*/
{
setfillstyle(SOLID_FILL,BLUE);
bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
}
void DrawBrick(int x,int y)/*畫磚*/
{
setfillstyle(SOLID_FILL,6);
bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
setcolor(15);
line(100+x*20-9,50+y*20-4,100+x*20+9,50+y*20-4);
line(100+x*20-9,50+y*20+4,100+x*20+9,50+y*20+4);
line(100+x*20-4,50+y*20-9,100+x*20-4,50+y*20+9);
line(100+x*20+4,50+y*20-9,100+x*20+4,50+y*20+9);
}
void DrawHome(int x,int y)/*畫老家*/
{
setcolor(0);
setfillstyle(SOLID_FILL,GREEN);
fillellipse(100+x*20,50+y*20,9,9);
}
void DrawBlack(int x,int y)/*去除內容*/
{
setcolor(0);
setfillstyle(SOLID_FILL,0);
bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
}
void DrawPlay(int x,int y)/*畫玩家*/
{
setcolor(4);/*玩家為紅色*/
circle(100+x*20,50+y*20,7);
switch(Playone.direction)/*判斷玩家方向*/
{
case 1:line(100+x*20,50+y*20,100+x*20,50+y*20-9);break;/*上*/
case 2:line(100+x*20,50+y*20,100+x*20+9,50+y*20);break;/*右*/
case 3:line(100+x*20,50+y*20,100+x*20,50+y*20+9);break;/*下*/
case 4:line(100+x*20,50+y*20,100+x*20-9,50+y*20);break;/*左*/
}
}
void DrawAmy(int x,int y,int i)/*畫敵人*/
{
if(amy.color==12)
setcolor(12);
else if(amy.color==13)
setcolor(13);
else/*這里是判斷三種顏色的坦克*/
setcolor(14);
circle(100+x*20,50+y*20,7);
switch(amy.direction)/*判斷玩家方向*/
{
case 1:line(100+x*20,50+y*20,100+x*20,50+y*20-9);break;/*上*/
case 2:line(100+x*20,50+y*20,100+x*20+9,50+y*20);break;/*右*/
case 3:line(100+x*20,50+y*20,100+x*20,50+y*20+9);break;/*下*/
case 4:line(100+x*20,50+y*20,100+x*20-9,50+y*20);break;/*左*/
}
}
void Score()/*輸出分數*/
{
char s[10];
Playone.score+=10;
sprintf(s,"%d",Playone.score);
setfillstyle(SOLID_FILL,0);
bar(550,100,640,130);
settextstyle(0,0,2);
setcolor(YELLOW);
outtextxy(550,115,s);
}
void DrawMap()/*畫地圖*/
{int i,j,k;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
if(map[j]==1)
DrawTone(j,i);
else if(map[j]==2)
DrawBrick(j,i);
else if(map[j]==3)
DrawWater(j,i);
else if(map[j]==5)
DrawHome(j,i);
else if(map[j]==8)
{
Playone.x=i;
Playone.y=j;
Playone.direction=1;
DrawPlay(j,i);
for(k=0;k<5;k++)
Playone.fire[k].direction=-1;/*5顆子彈的方向都為-1,表示不存在*/
}
else if(map[j]==9)
{
amy[0].x=1;amy[0].y=1;amy[0].direction=amy[0].directiontwo=3;/*第一個敵人*/
amy[0].color=12;
DrawAmy(j,i,0);
}
}
for(i=1;i<5;i++)/*敵人都沒出現*/
amy.direction=amy.fire.direction=-1;
outtextxy(210,450,"2003.10.1 milo_zy");
settextstyle(0,0,2);/*首次輸出得分*/
setcolor(9);
outtextxy(525,80,"Score");
setcolor(YELLOW);
outtextxy(550,115,"0");
}
void far interrupt NewInt9(void)
{
unsigned char ScanCode,temp;
ScanCode=inportb(0x60);
temp=inportb(0x61);
outportb(0x61,temp | 0x80);
outportb(0x61,temp & 0x7f);
if(ScanCode&0x80)
{
ScanCode&=0x7f;
key_state[ScanCode]=0;
}
else
{
key_state[ScanCode]=1;

key_pressed[ScanCode]=1;
}
outportb(0x20,0x20);
}

void InstallKeyboard(void)
{
int i;
for(i=0;i<128;i++)
key_state=key_pressed=0;
OldInt9Handler=getvect(9); /*中斷向量值*/
setvect(9,NewInt9); /*中斷程序NewInt9地址存入指定的中斷向量表中INT 09H*/
}

void ShutDownKeyboard(void)
{
setvect(9,OldInt9Handler);
}

int GetKey(int ScanCode)
{
int res;
res=key_state[ScanCode]|key_pressed[ScanCode];
key_pressed[ScanCode]=0;
return res;
}
void GameOver()/*游戲失敗*/
{
setcolor(0);
setfillstyle(SOLID_FILL,0);/*把老家給去除*/
fillellipse(100+9*20,50+18*20,9,9);
nosound();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(150,5,"GAME OVER");
while(1)
{
if(GetKey(KEY_ESC))
break;
}
}
void GamePlay()/*玩游戲的過程*/
{
int i,j,lose=0;/*lose是1的時候表示失敗*/
int t=0;
randomize();
while(1)
{
for(i=0;i<5;i++)/*畫敵人的子彈*/
{
if(amy.fire.direction>0)
putpixel(100+amy.fire.y*20,50+amy.fire.x*20,11);
}
for(i=0;i<=4;i++)/*畫玩家子彈*/
{
if(Playone.fire.direction>0)/*大於0表示玩家子彈存在*/
putpixel(100+Playone.fire.y*20,50+Playone.fire.x*20,11);
}
TimeDelay(500000);/*關鍵的時間改動*/
for(i=0;i<5;i++)/*去敵人的子彈*/
{
if(amy.fire.direction>0)
putpixel(100+amy.fire.y*20,50+amy.fire.x*20,0);
}
for(i=0;i<=4;i++)/*去玩家除子彈*/
{
if(Playone.fire.direction>0)
putpixel(100+Playone.fire.y*20,50+Playone.fire.x*20,0);
}
for(i=0;i<=4;i++)/*玩家子彈位置的變化*/
{
if(Playone.fire.direction<0)
continue;
if(Playone.fire.direction==1)
{Playone.fire.x--;Playone.fire.y=Playone.fire.y;}
else if(Playone.fire.direction==2)
{Playone.fire.y++;Playone.fire.y=Playone.fire.y;}
else if(Playone.fire.direction==3)
{Playone.fire.x++;Playone.fire.y=Playone.fire.y;}
else if(Playone.fire.direction==4)
{Playone.fire.y--;Playone.fire.y=Playone.fire.y;}
/*打到石頭或者磚頭的情況下減少子彈*/
if(map[Playone.fire.x][Playone.fire.y]==1)/*打到石頭*/
Playone.fire.direction=-1;/*子彈消失*/
if(map[Playone.fire.x][Playone.fire.y]==2)/*打到磚頭*/
{
Playone.fire.direction=-1;
DrawBlack(Playone.fire.y,Playone.fire.x);/*磚頭打掉*/
map[Playone.fire.x][Playone.fire.y]=0;/*被打掉的地方變成可走的地方*/
}
if(map[Playone.fire.x][Playone.fire.y]==5)/*自己打到老家*/
{lose=1;break;}
for(j=0;j<5;j++)
{
if(amy[j].direction<0)/*不存在的不判斷*/
continue;
if(amy[j].x==Playone.fire.x&&amy[j].y==Playone.fire.y)/*打中敵人*/
{
Playone.fire.direction=-1;
DrawBlack(Playone.fire.y,Playone.fire.x);
map[Playone.fire.x][Playone.fire.y]=0;/*被打掉的地方變成可走的地方*/
amy[j].fire.direction=amy[j].direction=-1;/*這個敵人消失*/
Score();/*輸出得分*/
}
}
}
for(i=0;i<5;i++)/*敵人子彈位置的變化*/
{
if(amy.direction<0||amy.fire.direction<0)
continue;
if(amy.fire.direction==1)
{amy.fire.x--;amy.fire.y=amy.fire.y;}
else if(amy.fire.direction==2)
{amy.fire.y++;amy.fire.x=amy.fire.x;}
else if(amy.fire.direction==3)
{amy.fire.x++;amy.fire.y=amy.fire.y;}
else if(amy.fire.direction==4)
{amy.fire.y--;amy.fire.x=amy.fire.x;}
/*打到石頭或者磚頭的情況下減少子彈*/
if(map[amy.fire.x][amy.fire.y]==1)/*打到石頭*/
amy.fire.direction=-1;/*子彈消失*/
if(map[amy.fire.x][amy.fire.y]==2)/*打到磚頭*/
{
amy.fire.direction=-1;
DrawBlack(amy.fire.y,amy.fire.x);/*磚頭打掉*/
map[amy.fire.x][amy.fire.y]=0;/*被打掉的地方變成可走的地方*/
}
if(map[amy.fire.x][amy.fire.y]==5)/*敵人打到老家*/
{lose=1;break;}
if(amy.fire.x==Playone.x&&amy.fire.y==Playone.y)/*打中玩家*/
{
for(j=0;j<5;j++)
Playone.fire[j].direction=-1;/*玩家子彈都消失*/
amy.fire.direction=-1;
DrawBlack(amy.fire.y,amy.fire.x);
map[amy.fire.x][amy.fire.y]=0;/*被打掉的地方變成可走的地方*/
lose=1;break;/*好人被打掉後就失敗*/
}
}
nosound();
for(i=0;i<5;i++)/*敵人方向隨機的改變*/
{
if(amy.direction<0)
continue;
while(1)
{
amy.directiontwo=random(4)+1;
if(amy.direction==1&&amy.directiontwo==3)
continue;
if(amy.direction==3&&amy.directiontwo==1)
continue;
if(amy.direction==2&&amy.directiontwo==4)
continue;
if(amy.direction==4&&amy.directiontwo==2)/*這里4個if是判斷有沒有往返走*/
continue;
if(amy.directiontwo==3&&(map[amy.x+1][amy.y]==3||map[amy.x+1][amy.y]==1||map[amy.x+1][amy.y]==2))
continue;
if(amy.directiontwo==1&&(map[amy.x-1][amy.y]==3||map[amy.x-1][amy.y]==1||map[amy.x-1][amy.y]==2))
continue;
if(amy.directiontwo==2&&(map[amy.x][amy.y+1]==3||map[amy.x][amy.y+1]==1||map[amy.x][amy.y+1]==2))
continue;
if(amy.directiontwo==4&&(map[amy.x][amy.y-1]==3||map[amy.x][amy.y-1]==1||map[amy.x][amy.y-1]==2))
continue;/*以上4個是是否碰到了牆壁或者水什麼的*/
DrawBlack(amy.y,amy.x);/*把原來的地方擦掉*/
amy.direction=amy.directiontwo;
if(amy.direction==1)
{amy.x--;amy.y=amy.y;}
if(amy.direction==3)
{amy.x++;amy.y=amy.y;}
if(amy.direction==2)
{amy.y++;amy.x=amy.x;}
if(amy.direction==4)
{amy.y--;amy.x=amy.x;}
if(amy.x==Playone.x&&amy.y==Playone.y)/*相撞*/
lose=1;
if(map[amy.x][amy.y]==5)/*敵人撞到老家*/
lose=1;
DrawAmy(amy.y,amy.x,i);/*畫敵人*/
if(amy.fire.direction<0)
amy.fireplay=random(4);
if(amy.fireplay==1&&amy.fire.direction<0)/*發射*/
{
amy.fire.direction=amy.direction;/*子彈方向與敵人方向一致*/
amy.fire.x=amy.x;
amy.fire.y=amy.y;
}
break;
}
}
if(lose)/*因為失敗而跳出循環顯示失敗*/
{GameOver();break;}
if(GetKey(KEY_ESC))
break;
if(GetKey(KEY_UP))/*往上*/
{
if(Playone.direction==1&&map[Playone.x-1][Playone.y]!=1&&map[Playone.x-1][Playone.y]!=2)
{
if(map[Playone.x-1][Playone.y]==3)
continue;
DrawBlack(Playone.y,Playone.x);/*這個if是移動,前提是方向與按下的到向一致*/
Playone.x--;
Playone.direction=1;
DrawPlay(Playone.y,Playone.x);
}
else/*只調整炮頭方向*/
{
DrawBlack(Playone.y,Playone.x);
Playone.direction=1;
DrawPlay(Playone.y,Playone.x);
}
}
else if(GetKey(KEY_DOWN))/*往下*/
{
if(Playone.direction==3&&map[Playone.x+1][Playone.y]!=1&&map[Playone.x+1][Playone.y]!=2)
{
if(map[Playone.x+1][Playone.y]==3)
continue;
DrawBlack(Playone.y,Playone.x);
Playone.x++;
Playone.direction=3;
DrawPlay(Playone.y,Playone.x);
}
else
{
DrawBlack(Playone.y,Playone.x);
Playone.direction=3;
DrawPlay(Playone.y,Playone.x);
}
}
if(GetKey(KEY_RIGHT))/*往右*/
{
if(Playone.direction==2&&map[Playone.x][Playone.y+1]!=1&&map[Playone.x][Playone.y+1]!=2)
{
if(map[Playone.x][Playone.y+1]==3)
continue;
DrawBlack(Playone.y,Playone.x);
Playone.y++;
Playone.direction=2;
DrawPlay(Playone.y,Playone.x);
}
else
{
DrawBlack(Playone.y,Playone.x);
Playone.direction=2;
DrawPlay(Playone.y,Playone.x);
}
}
if(GetKey(KEY_LEFT))/*往左*/
{
if(Playone.direction==4&&map[Playone.x][Playone.y-1]!=1&&map[Playone.x][Playone.y-1]!=2)
{
if(map[Playone.x][Playone.y-1]==3)
continue;
DrawBlack(Playone.y,Playone.x);
Playone.y--;
Playone.direction=4;
DrawPlay(Playone.y,Playone.x);
}
else
{
DrawBlack(Playone.y,Playone.x);
Playone.direction=4;
DrawPlay(Playone.y,Playone.x);
}
}
if(GetKey(KEY_SPACE))/*發射子彈*/
{
for(i=0;i<5;i++)/*用循環來找是否有子彈可以用*/
if(Playone.fire.direction<0)
{
sound(300);
Playone.fire.direction=Playone.direction;/*子彈方向與坦克方向一致*/
Playone.fire.x=Playone.x;
Playone.fire.y=Playone.y;
break;/*找到後就跳出循環*/
}
}
if(map[Playone.x][Playone.y]==5)/*玩家自己撞到老家*/
lose=1;
for(i=0;i<5;i++)/*判斷是否因自己控制撞到敵人*/
{
if(amy.direction<0)
continue;
if(amy.x==Playone.x&&amy.y==Playone.y)/*相撞*/
lose=1;
}
if(lose)/*因為失敗而跳出循環顯示失敗*/
{GameOver();break;}
t++;/*加到一定的程序就出現新的敵人*/
if(t==30) /*到了增加敵人的時候*/
{t=0;
for(i=0;i<5;i++)
if(amy.direction<0)
{
amy.direction=amy.directiontwo=3;
amy.x=1;
amy.y=random(3);/*方向隨機*/
if(amy.y==0)
amy.y=1;
else if(amy.y==1)
amy.y=9;
else/*這里和上面的兩個判斷是判斷敵人的初始位置*/
amy.y=18;
amy.color=random(3)+12;/*顏色隨機*/
DrawAmy(amy.y,amy.x,i);
break;/*找到一個後就出循環*/
}
}
}
}

❷ 如何編寫游戲

問題一:如何輪氏編寫簡單的游戲程序? stone.cpp
#include

#include

#include

#include

#include

#include

#include

const int Timer=0x1c;

int count;

int board[20][10];

const int ESC=0x11b,ENTER=0x1c0d,

UP=0x4800,DOWN=0x5000,LEFT=0x4b00,RIGHT=0x4d00;

void *** yze(int shapeNum,int (*result)[2]);

void drawShape(int screenX,int screenY,int shapeNum,int fillColor);

void prepare();

void interrupt (*oldHandle)(...);

void interrupt newHandle(...);

void setNewVect();

void recoverOldVect();

int afterChange(int boardX,int boardY,int shapeNum,int key);

int deleteRow(int boardX,int shapeNum);

int rowFull(int row);

void fillBoard(int boardX,int boardY,int shapeNum);

void main()

{ int driver,mode,errorCode;

driver=DETECT;

mode=0;

initgraph(&driver,&mode,);

errorCode=graphresult();

if(errorCode){

cerr 8410,5421,9540,6510,8541,6541,8540,5210,9541};

randomize(); ......>>

問題二:怎麼編寫一個游戲 要編寫游戲,首先得學會幾門編程語言. 編程主要語言有:C#,VisualC ,VisualBasic,Delphi...等. 如果臘缺散是新手,建議學VisualBasic6.0 下面簡單介紹一下VisualBasic. 隨著VisualBasic的逐步發展完善和功能的不斷括展,很多軟體開發人員利用VisualBasic開發了大量的應用軟體。VisualBasic已經成為使用人數最多,應用領域最廣的程序設計語言和軟體開發工具. 特點: 1.面向對象和可視化的程序設計. VisualBasic實現了對象的封裝,是程序員只需把注意力集中到對象的設計.特別是對程序界面的設計. 2.事件驅動的運行機制. VisualBasic程序是在Windwos環境下開發的,因此其運行機制是事件驅動的。也就是只有發生某個動作 (如按下某鍵,滑鼠移動等動作時發生的變化等),才會執行相應的程序段.這種機制使人機交互更為方便,程序的功能大大加強,也為多任務運行方式提供了保證. 3.結構化的程序設計語言. 在程序結構方面,VisualBasic繼承了QBasic的所有優點,不但完全符合結構化程序設計的要求,而且具有較 強的數值運算和字元串的處理能力. 4.多種資料庫訪問能力. VisualBasic具有很強的資料庫訪問能力,不但能方便的處理諸如VisualFoxFro,Access,等小型資料庫 中的數據,還可以輕松訪問MicrosoftSQLServer等大中型資料庫中的數據. 5.提供了功能完備的應用程序集成開發環境. VisualBasic的集成開發環境用戶界面,代碼編寫,調試運行和編譯打包等諸多功能於一體,為程序員提供了一 整套功能扮答強大的應用程序開發環境. 6.方便使用的聯機幫助功能. 利用集成開發環境中的幫助菜單或F1功能鍵,用戶可以隨時獲取和查閱有關的幫助信息(MSDN). 其易學易用,是新手的最好選擇. VisualBasic6.0_SP6中文大企業版: 119.147.41.16/...1F7612

問題三:怎麼編程游戲 5分 人能識別有意義的字母、數字組合,就是代碼。電腦機器只能識別0和1的二進制數字組合。人寫的代碼不能直接被電腦識別,需要一個翻譯的過程,這個過程叫編譯,把對人有意義的代碼轉換為對電腦有意義的二進制碼。你看到的游戲畫面是電腦理解了這些二進制碼之後的結果。電腦根據二進制碼來進行游戲圖像渲染、處理玩家的鍵盤滑鼠操作信息。舉個簡單的例子吧,假設人寫的代碼如下:Action action = drawCar();boolean goLeftBool = getInputLeftArrow();if(goLeftBool){ action.setLocation(action.getLocation().getX()--, action.getLocation().getY());}這段代碼大概意思是:畫輛車,玩家按左,車往左走。編譯之後形成下面這樣的二進制碼:10101010001010101011其中每行代表源代碼中的一句。就像黑客帝國一樣,哈哈。這樣電腦才能理解。當然,這是個例子而已,真正編譯出來的二進制碼比這個要多得多!

問題四:怎麼編寫一個游戲程序? 新手如何學習C語言 第一:一些概念。 C語言是一門程序設計語言,有一些標准,比較重要的是ANSI C(好像是C89)和C99。 數據結構包括邏輯結構和物理結構。邏輯結構是數據元素 *** 和定義在 *** 上的關系。物理結構是邏輯結構在計算機中的實現。 LCC、VC、TC、GCC都是C語言編譯器,一般包括集成開發環境,編譯器和鏈接器及輔助工具 我們書寫的是C源程序,源程序通過編譯器編譯為中間文件,中間文件經鏈接器鏈接生成可執行文件。不同操作系統可執行文件不同。中間文件也有幾個標准,微軟使用的和Linux下通用的有差異。 第二:學習什麼。 個人認為程序設計學習的重點放在數據結構的學習上,但是這種學習要有一個平台,比如C語言。 學習C語言首先要掌握基本語法,常量、變數、類型、及順序結構、分支結構和循環結構的意義及用法。進一步學習構造類型如指針、結構、函數的意義和用法。 C語言提供一些標准函數以減輕程序設計工作量,這些函數我們自己也可以實現。即使不依靠函數庫,只有編譯器,理論上就足夠了。事實上,提供的標准函數效率都很高,使用很頻繁,沒有自己實現的必要,所以掌握常用函數是非常必要的,但是要注意函數的適用范圍。 繼續學習因人而異,應該可以獨立選擇了。 第三:如何學習。 強調多實踐,C語言的學習要經常上機,多寫程序才能逐步提高。 推薦書籍:C Programming Languge。有中譯本
求採納

問題五:如何編程游戲 105分 用flash,Flas *** 設計的三大基本功能是整個Flas *** 設計知識體系中最重要、也是最基礎的,包括:繪圖和編輯圖形、補間動畫和遮罩。這是三個緊密相連的邏輯功能,並且這三個功能自Flash誕生以來就存在。
flash 8下載地址:

sky/soft/2491

問題六:如何編寫手機游戲 要是能用問問讓你學會了,軟體工程師早就沒飯吃了

問題七:怎樣用C語言編寫一個小游戲? #include
#include

#include

#include windows.h

void gotoxy(int x,int y) /*定義gotoxy函數*/

{ COORD c;

c.X=x-1;

c.Y=y-1;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);

}

int main()

{

struct point

{

int x, y;/*該點的位置,包括x坐標和y坐標*/

int xv, yv;/*該點在x軸,y軸的速度*/

}man;

long p;

man.x=man.y=20;

man.xv=man.yv=1;

system(cls);

p=1000000000000000;

while(p--)

{

if(p%50000)

continue;

gotoxy(man.x, man.y);/*把游標移到指定的坐標*/

printf( );/*輸出一個空格,把先前的字元擦去*/

man.x += man.xv;/*水平方向按x軸的速度運動*/

man.y += man.yv;/*垂直方向按y軸的速度運動*/

if(man.x==0||man.x==80)

man.xv*=-1;

if(man.y==0||man.y==80)

man.yv*=-1;

gotoxy(man.x, man.y);

printf(%c\b, 2); /*輸出ASCII碼值為2的笑臉字元*/

}

getchar ();

return 0;

}

這個是一個會動的笑臉,你可以從最簡單開始

問題八:怎麼編寫游戲程序? 這個坦白地說,非常難,但也不是不可以,就看你有沒有恆心了。
需要學習JAVA SE的基礎,包括AWT、SWING的一些知識,二進制與文本IO,3D圖象,可能還涉及很多運算,包括聲音與視頻的輸出,動畫或flash的輸出,甚至有可能要有與windows DirectX的交互。我在外面看攻有JAVA游戲編程方面的書,你可以買來看看

問題九:一個游戲的程序怎麼寫 要具備兩個要素 第一要知道游戲怎麼玩即規則 第二要懂得計算機中的某一門語言 好了把游戲的規則通過計算機語言告訴給電腦 就可以了

問題十:如何編制游戲 諸如:C語言,幀繪制,素材拼接做mod,甚至CAD都行,方法實在太多,但也很復雜,非三言兩語可以說明。
想要簡單製作的話,使用游戲製作軟體,如RPG maker, FPS maker。

❸ 最簡單的C#小游戲編程

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
class Player
{
public string Name;
Card[] cards = new Card[5];

public void InitFiveCards()//五張牌
{

Random md = new Random();
int m = md.Next(1, 14);
for (int i = 0; i < 5; i++)
{
Card card = new Card();
card.Point = md.Next(1, 14);
card.Color = md.Next(0, 4);
cards[i] = card;

}

}

public void display()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine(cards[i].CardDisplayString());

}

}

public void chosecard() //取牌
{
int n;
Random md = new Random();
int m = md.Next(1, 14);

n = Convert.ToInt32(Console.ReadLine());

Card cd = new Card();
switch (n)
{
case 0:
Table.tablecard = n;

Console.WriteLine("新取的牌");
break;

case 1:

n = m;
Console.WriteLine("上個玩家丟的牌");
break;

}

}
public void throwcard()//丟牌
{
Card[] cards = new Card[5];

Random md = new Random();
int m = md.Next(1, 14);
for (int i = 0; i < 5; i++)
{
Card card = new Card();
card.Point = md.Next(1, 14);
card.Color = md.Next(0, 4);
cards[i] = card;

switch (i)
{
case 0:
card = cards[1];
break;
case 1:
card = cards[2];
break;
case 2:
break;
case 3:
card = cards[3];
break;
case 4:
card = cards[4];
break;

}
}
Console.WriteLine("chose the card:{0}");

}
public void Changeplayer()
{
int m;

}

public bool isWin()
{

for (int i = 1; i < 5;i++ )
{
if (cards[i].Color != cards[0].Color)
{
return false;
}
}
return true;

}

}

class Table
{

public static int tablecard;

public void cunchu()
{

Console.WriteLine(tablecard);

}

}

class Card
{

public int Point;
public int Color;

public string CardDisplayString()
{
string sColor = "";

switch (Color)
{
case 0:
sColor = "紅心";
break;
case 1:
sColor = "方塊";
break;
case 2:
sColor = "黑桃";
break;
case 3:
sColor = "草花";
break;
}

return string.Format("花色:{0} Point:{1}", sColor, Point);

}

class Program
{
static void Main(string[] args)
{

//1.輸入玩家數量
int py;
Console.WriteLine("請輸入玩家的數量");
py = int.Parse(Console.ReadLine());

Player[] pys = new Player[py];

//2.輸入玩家姓名
for (int m = 0; m < py; m++)
{
pys[m] = new Player();
Console.WriteLine("請輸入第{0}玩家名字", m + 1);
pys[m].Name = Console.ReadLine();
pys[m].InitFiveCards();
}

//3.開始游戲
bool isExit = false;

while (!isExit)
{
for (int m = 0; m < py; m++)
{

pys[m].display();

pys[m].chosecard();
pys[m].throwcard();
if (pys[m].isWin())
{
Console.WriteLine("The player name :{0}" + "游戲結束");

isExit = true;
break;
}

}

}

Console.ReadLine();

}
}
}
}

❹ 怎麼編程一個最簡單游戲代碼

利用隨機數猜大小,如下:

1、代碼的第一行,是一個include語句。沒有它我們的程序會編譯不過。有了它就是告訴編譯器在對代碼進行編譯之前,必須要包含程序需要的文件。這里的stdio.h就是我們需要的頭文件。

2、代碼第二行是一個main函數,這個main函數的返回值是一個int整型數據。剛開始學習編程的時候我們可以認為程序運行的時候是從main函數開始的。後續會專門給大家做一個介紹向大家說明在main函數之前還做了哪些事情。

3、每個函數都用一對「{}」進行包含,表示著函數體的開始和結束,當然後面說到控制語句的時候它還表示一段控制語句的開始和結束。

4、main函數中調用了一個printf函數。它是用來向控制台輸出我們想要的內容。printf的函數定位格式為:int printf(constchar*format,...)。format中定義了輸出內容和格式。

5、return函數執行完後。在退出函數體之前,會將函數進行返回。return後的內容根據函數返回值定義而定。在本段程序中返回的是整型數據0。

❺ 核桃編程怎麼製作簡單小游戲

方配鍵法如下:
1、注冊核桃編程賬號,登錄到核桃編程官網。
2、選擇「開始編程」,進入創建游戲頁面,可以選擇自己喜歡的游戲模板或者新培或巧建游戲。
3、通過不斷修改編程,完善自己的游戲。
4、完成游戲編程之後,團彎可以將游戲發布到核桃編程官網,分享給其他用戶。

❻ c++游戲編程,寫一個游戲編程,簡單點

#include<iostream>#include<iomanip>using namespace std; const int X = 21; //棋盤行數const int Y = 21; //棋盤列數char p[X][Y]; //定義棋盤int m=0;//定義臨時點,保存輸入坐標int n=0; void display() //輸出棋盤{ for(int i=0; i<X; i++) cout<<setw(3)<<setfill(' ')<<i; cout<<endl; for(int i=1; i<Y; i++) { cout<<setw(3)<<setfill(' ')<<i; for(int j=1;j<X;j++) cout<<setw(3)<<setfill(' ')<<p[i][j]; cout<<endl; } } void black() //黑方落子{ cout<<"請黑方輸入落子位置:\n" <<"請輸入落子的行數:"; cin>>m; cout<<"請輸入落子的列數:"; cin>>n; if(m<=0||m>=X||n>=Y||n<=0) { cout<<"超出棋盤范圍,請重新輸入正確坐標!\n"; black(); } else if((p[m][n]==1)||p[m][n]==2) { cout<<"該點已有棋子,請重新選取落子點!\n"; black(); } else p[m][n]=1; //黑方用1來表示 system("cls"); display();} void red() //紅方落子{ cout<<"請紅方輸入落子位置:\n" <<"請輸入落子的行數:"; cin>>m; cout<<"請輸入落子的列數:"; cin>>n; if(m>=X||m<=0||n<=0||n>=Y) { cout<<"超出棋盤范圍,請重新輸入正確坐標!\n"; red(); } else if((p[m][n]==1)||p[m][n]==2) { cout<<"該點已有棋子,請重新選取落子點!\n"; red(); } else p[m][n]=2; //紅方用2來表示 system("cls"); display();} int evalue() //只需要判斷落子點為中心的九點「米」字是否連續即可{ int k = 0,r = 0; /*斜線判斷*/ for(k=3;k<X-2;k++) //兩條,其中的p[k][r]!='-'是排除空子的情況 { for(r=3;r<Y-2;r++) { if(p[k][r]!='-'&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r]) return 1; else if(p[k][r]!='-'&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r]) return 1; } } /*橫線判斷*/ for(k=1;k<X;k++) //p[k][r]!='-'是排除空子的情況 for(r=3;r<Y-2;r++) if(p[k][r]!='-'&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r]) return 1; /*豎線判斷*/ for(k=3;k<X-2;k++) //p[k][r]!='-'是排除空子的情況 for(r=1;r<Y;r++) if(p[k][r]!='-'&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r]) return 1; return 0; } int main(){ memset(p,'-',441); //初始化為『-』 cout<<"歡迎使用簡易雙人對戰五子棋游戲\n" <<"五子棋棋譜如下:\n"; display(); while(1) { red(); if(evalue()) { cout<<"紅方贏!\n"; break; } black(); if(evalue()) { cout<<"黑方贏!\n"; break; } } return 0;}

❼ 如何編程游戲

當下互聯網行業發展迅速,與之相關的產業大多發展都很好,游戲設計的前景自然也是相當不錯的。一個游戲問世要經歷很多環節,劇本設計,原畫創作,場景建模,但核心部分還是編程語言開發。

主要學的內容如下:

1.游戲程序設計:C++程序設計入門;基本數據類型和輸入輸出;流程式控制制語句;數組、指針和引用、函數;程序結構和書寫規;范結構體和聯合體、類;繼承與多態;異常處理與程序調試。

2.演算法與數據結構:演算法分析;數據結構;基本演算法;STL的概念與使用;靜態庫與動態庫;XML庫的使用。

3.Win32程序設計:Windows程序入門;Windows消息;GDI繪圖游戲工具與MFC;網路編程基礎。

4.游戲數學和智能應用:游戲中的坐標系;矢量、矩陣;幾何碰撞;物理模擬;人工智慧與尋路演算法。

5.2D游戲技術與應用:2D游戲技術概論;游戲地圖系統;GUI系統;戰斗系統設計;任務系統;優秀的聲音引擎BASS;Cocos2D-X引擎;Box2D物理引擎。

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

❽ 如何在家自己編程游戲

想要自己編程做游戲的話:
1.首先要學習看數據的結構,不用學的很深入。在實踐中慢慢深化。
2.然後學下sdl,這個只要看著網上的教程就可以編一些簡單的程序,
3.之後堅持多練習編程,可以從小的游戲慢慢編寫。

❾ 如何自己編程做游戲

自己編程做游戲方法如下:
1、基礎語言階段:常用的編程語言有,C,C++,JAVA,其中最廣泛被使用的就是C++,C++語言是一切游戲程序的基礎,換而言之,一個優秀的游戲程序員,必須非常熟練掌握並應用C++。
2、數據結構:在掌握C++之後,需要進行數據結構的學習,形象的講,就是那麼一大堆數據,如何去有序的排列其結構。通過對數據結構的學習,便能夠開始閱讀他人編寫的代碼,嘗試開發簡單的程序,可以實現一些編程者自己的構想,是每個程序員必須掌握的技巧。
3、「庫」的學習及應用:最常用的有MFC(微軟公司類庫),GUI(圖形界面庫),當然「庫」的知識及功能非常龐大,通常來說,熟練掌握一部分經常涉及的知識即可。4、游戲程序對於硬體的操縱。比如,內存,CPU,顯卡,這將會涉及到一些數學知識,比如立體幾何,線性代數等,但是也不用驚慌,並不是非常困難。通過對硬體的熟練操縱,才能將游戲的畫面,流暢度等等充分給予表達。
5、對於相關知識的學習。包括物理,腳本,美術等等。不需要深入了解,但相關知識的豐富對於將來做游戲程序會有直接幫助。
6、對於游戲引擎的熟悉及使用。游戲引擎一般包括渲染器,內存管理器,組織管理幾部分。對游戲的畫面做出渲染,高效使用內存以及如何控制動畫播放等功能。熟悉引擎的使用,也將對於游戲程序員有直觀的幫助。

❿ 教你如何使用C語言編寫簡單小游戲

編寫程序,實現如下表所示的5-魔方陣。
17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

5-魔方陣
問題分析
所謂「n-魔方陣」,指的是使用1〜n2共n2個自然數排列成一個n×n的方陣,其中n為奇數;該方陣的每行、每列及對角線元素之和都相等,並為一個只與n有關的常數,該常數為n×(n2+1)/2。
例如5-魔方陣,其第一行、第一列及主對角線上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主對角線上元素之和:17+5+13+21+9=65

n×(n2+1)/2=5×(52+1)/2=65
可以驗證,5-魔方陣中其餘各行、各列及副對角線上的元素之和也都為65。
假定陣列的行列下標都從0開始,則魔方陣的生成方法為:在第0行中間置1,對從2開始的其餘n2-1個數依次按下列規則存放:
(1)
假定當前數的下標為(i,j),則下一個數的放置位置為當前位置的右上方,即下標為(i-1,j+1)的位置。
(2)
如果當前數在第0行,即i-1小於0,則將下一個數放在最後一行的下一列上,即下標為(n-1,j+1)的位置。
(3)
如果當前數在最後一列上,即j+1大於n-1,則將下一個數放在上一行的第一列上,即下標為(i-1,0)的位置。
(4)
如果當前數是n的倍數,則將下一個數直接放在當前位置的正下方,即下標為(i+1,j)的位置。
演算法設計
在設計演算法時釆用了下面一些方法:
定義array()函數,array()函數的根據輸入的n值,生成並顯示一個魔方陣,當發現n不是奇數時,就加1使之成為奇數。
使用動態內存分配與釋放函數malloc()與free(),在程序執行過程中動態分配與釋放內存,這樣做的好處是使代碼具有通用性,同時提高內存的使用率。
在分配內存時還要注意,由於一個整型數要佔用兩個內存,因此,如果魔方陣中要存放的數有max個,則分配內存時要分配2*max個單元,從而有malloc(max+max)。在malloc()函數中使用max+max而不是2*max是考慮了程序運行的性能。
顯然應該使用二維數組來表示魔方陣,但雖然數組是二維形式的,而由於內存是一維線性的,因此在存取數組元素時,要將雙下標轉換為單個索引編號。在程序中直接定義了指針變數來指向數組空間,即使用malloc()函數分配的內存。

熱點內容
伺服器搭建主機配置 發布:2025-07-18 12:12:43 瀏覽:125
ftp命令批量下載文件 發布:2025-07-18 11:58:45 瀏覽:743
nba2k17文件夾 發布:2025-07-18 11:48:53 瀏覽:871
朔源碼是什麼 發布:2025-07-18 11:44:33 瀏覽:774
迷你世界解壓劇場 發布:2025-07-18 11:43:48 瀏覽:154
linux安裝opencv 發布:2025-07-18 11:42:10 瀏覽:446
編程游戲的軟體有哪些 發布:2025-07-18 11:41:34 瀏覽:956
c程序設計語言電子書 發布:2025-07-18 11:35:58 瀏覽:642
lightning耳機如何在安卓手機上用 發布:2025-07-18 11:21:47 瀏覽:176
妄想山海新宿怎麼配置好 發布:2025-07-18 11:07:43 瀏覽:616