㈠ 怎樣寫一個兩人對戰的黑白棋游戲的C語言源程序
//-----wlfyrq-----//
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
ints[8][8];//棋盤二維數組
intflag=-1;//當前輪到誰下棋
intwhite=0,black=0;//黑,白棋子數
typedefstruct
{
intx;
inty;
}PT;
PTbuf[10];
intbuf_pos=0;
//設置CMD窗口游標位置
voidsetxy(intx,inty)
{
COORDcoord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
//獲取當前CMD當前游標所在位置
voidgetxy(int*x,int*y)
{
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
COORDcoordScreen={0,0};//游標位置
CONSOLE_SCREEN_BUFFER_INFOcsbi;
if(GetConsoleScreenBufferInfo(hConsole,&csbi))
{
//printf("游標坐標:(%d,%d) ",csbi.dwCursorPosition.X,csbi.dwCursorPosition.Y);
*x=csbi.dwCursorPosition.X;
*y=csbi.dwCursorPosition.Y;
}
}
voidbuf_in(intx,inty)//進入buffer
{
buf[buf_pos].x=x;
buf[buf_pos].y=y;
buf_pos++;
}
PTbuf_out()//從buffer移出
{
returnbuf[--buf_pos];
}
voidprt()//輸出到屏幕
{
white=0;
black=0;
system("cls");
inti,j;
printf("");
for(i=0;i<8;i++)
{
printf("%2d",i+1);
}
printf(" ");
for(i=0;i<8;i++)
{
printf("%2d",i+1);
for(j=0;j<8;j++)
{
switch(s[i][j])
{
case0:
printf("+");
break;
case1:
white++;
printf("○");
break;
case-1:
black++;
printf("●");
break;
}
}
printf(" ");
}
getxy(&i,&j);
setxy(25,4);
printf("○:%d",white);
setxy(25,5);
printf("●:%d",black);
if(white+black==64)//當黑白字總計達到64個,則表示棋盤所有位置均下完
{
setxy(25,6);
if(white>black)//判斷輸贏
{
setxy(30,4);
printf("win!");
}
elseif(black>white)
{
setxy(30,5);
printf("●win!");
}
else
{
printf("peace!");
}
setxy(i,j+2);
exit(0);
}
setxy(i,j);
}
voidset_reverse()//翻轉棋的顏色
{
while(buf_pos>0)
{
buf_pos--;
s[buf[buf_pos].x][buf[buf_pos].y]=0-s[buf[buf_pos].x][buf[buf_pos].y];
}
}
voidleft_up(intx,inty)//左上方向檢索
{
if(x-1>=0&&y-1>=0)
{
if(s[x-1][y-1]==0)
{
buf_pos=0;
}
elseif(s[x-1][y-1]==flag)
{
set_reverse();
}
elseif(s[x-1][y-1]==0-flag)
{
buf_in(x-1,y-1);
left_up(x-1,y-1);
}
}
}
voip(intx,inty)//上--檢索
{
if(x-1>=0)
{
if(s[x-1][y]==0)
{
buf_pos=0;
}
elseif(s[x-1][y]==flag)
{
set_reverse();
}
elseif(s[x-1][y]==0-flag)
{
buf_in(x-1,y);
up(x-1,y);
}
}
}
voidright_up(intx,inty)//右上方向檢索
{
if(x-1>=0&&y+1<8)
{
if(s[x-1][y+1]==0)
{
buf_pos=0;
}
elseif(s[x-1][y+1]==flag)
{
set_reverse();
}
elseif(s[x-1][y+1]==0-flag)
{
buf_in(x-1,y+1);
right_up(x-1,y+1);
}
}
}
voidright(intx,inty)//右--檢索
{
if(y+1<8)
{
if(s[x][y+1]==0)
{
buf_pos=0;
}
elseif(s[x][y+1]==flag)
{
set_reverse();
}
elseif(s[x][y+1]==0-flag)
{
buf_in(x,y+1);
right(x,y+1);
}
}
}
voidright_down(intx,inty)//右下方向檢索
{
if(x+1<8&&y+1<8)
{
if(s[x+1][y+1]==0)
{
buf_pos=0;
}
elseif(s[x+1][y+1]==flag)
{
set_reverse();
}
elseif(s[x+1][y+1]==0-flag)
{
buf_in(x+1,y+1);
right_down(x+1,y+1);
}
}
}
voiddown(intx,inty)//下--檢索
{
if(x+1<8)
{
if(s[x+1][y]==0)
{
buf_pos=0;
}
elseif(s[x+1][y]==flag)
{
set_reverse();
}
elseif(s[x+1][y]==0-flag)
{
buf_in(x+1,y);
down(x+1,y);
}
}
}
voidleft_down(intx,inty)//左下方向檢索
{
if(x+1<8&&y-1>=0)
{
if(s[x+1][y-1]==0)
{
buf_pos=0;
}
elseif(s[x+1][y-1]==flag)
{
set_reverse();
}
elseif(s[x+1][y-1]==0-flag)
{
buf_in(x+1,y-1);
left_down(x+1,y-1);
}
}
}
voidleft(intx,inty)//左--檢索
{
if(y-1>=0)
{
if(s[x][y-1]==0)
{
buf_pos=0;
}
elseif(s[x][y-1]==flag)
{
set_reverse();
}
elseif(s[x][y-1]==0-flag)
{
buf_in(x,y-1);
left(x,y-1);
}
}
}
voidfun(intx,inty)//分別在:左上,上,右上,右,右下,下,左下,左,8個方向檢索
{
buf_pos=0;
left_up(x,y);
buf_pos=0;
up(x,y);
buf_pos=0;
right_up(x,y);
buf_pos=0;
right(x,y);
buf_pos=0;
right_down(x,y);
buf_pos=0;
down(x,y);
buf_pos=0;
left_down(x,y);
buf_pos=0;
left(x,y);
flag=0-flag;//換對方下棋
prt();
}
intmain()
{
inti,j;
for(i=0;i<8;i++)//初始化棋盤
{
for(j=0;j<8;j++)
{
s[i][j]=0;
}
}
//以下四行為設置兩黑,兩白棋子
s[3][3]=-1;
s[4][4]=-1;
s[3][4]=1;
s[4][3]=1;
prt();//輸出
intx,y;
chara,b;
while(1)
{
if(flag==1)//flag為1時,為白棋,flag為-1時,為黑棋
{
printf(" ○:");
}
elseif(flag==-1)
{
printf(" ●:");
}
fflush(stdin);//清空輸入緩沖區
scanf("%c%c",&a,&b);
x=a-'0';//輸入的字元轉換為數字
y=b-'0';
if(s[x-1][y-1]!=0||x>8||x<1||y>8||y<1)//如果輸入的數值不越界
{
prt();
continue;
}
x--;
y--;
s[x][y]=flag;//落子在棋盤上
fun(x,y);//判斷該位置周圍8個方向上棋子的顏色
}
return0;
}
㈡ c語言編程飛機射擊游戲
16418414
㈢ 求雙人射擊類游戲
1.是雙人的,我有兩個滑鼠
兩個滑鼠沒用!
誠心為LZ推薦:《希魔復活-重裝上陣》 (Bionic Commando Rearmed)
玩法和魂斗羅差不多,但是絕對好玩!
游戲下載地址 及其 詳細資料:
http://hi..com/%C4%B3x%CB%A7/blog/item/1e77151e74e7e16af724e44f.html
(網路空間鏈接)
【因為網路知道一些文字貼不出來,所以把我的回答放到博客里了】
預告視頻(請看完):
http://you.video.sina.com.cn/b/10736331-1311990492.html
㈣ 有沒有一款游戲是用C語言寫代碼相互攻擊的
fighting game?不是問題
㈤ 跪求一款雙人射擊游戲啊。
誠心為LZ推薦:《希魔復活-重裝上陣》 (Bionic Commando Rearmed)
玩法和魂斗羅差不多,雙人闖關,但是絕對好玩!
游戲下載地址 及其 詳細資料:
http://hi..com/%C4%B3x%CB%A7/blog/item/1e77151e74e7e16af724e44f.html
(網路空間鏈接)
【因為網路知道一些文字貼不出來,所以把我的回答放到博客里了】
預告視頻(請看完):
http://you.video.sina.com.cn/b/10736331-1311990492.html
推薦《爵士兔》
以上均為PC單機游戲,要街機游戲再聯系我
㈥ 求一款雙人玩的第一人稱射擊游戲
~【現實題材】~
《使命召喚:現代戰爭2》 《三角洲部隊7》 《叢林之狐:阿爾法之拳》 《重返狼穴3》
《領土戰爭:入侵紐約》 《無人永生2》 《鐵腕:軍閥 冬季攻勢》 《止痛葯:復活》
~【模擬戰場】~
《閃點行動2:龍騰》 《近距離作戰:先發制人》
~【小隊策略】~
《分裂細胞3:混沌理論》 《彩虹六號:維加斯2》 《幽靈行動:尖峰戰士2》 《武裝突襲2》 《霹靂小組4》
《全球行動》 《沖突:全球反恐》 《沖突:全球風暴》 《沖突:否定行動》
~【恐怖僵屍】~
《求生之路2》 《極度恐慌:撤離點》 《殺戮空間》 《毀滅戰士3》 《使命召喚:世界戰爭》
~【另類科幻】~
《無主之地》 《虛幻競技場2004》 《英雄薩姆3》 《恐龍獵人》
~【二戰題材】~
《戰火兄弟連:浴血奮戰》 《隱藏與危險2》 《戰士:二戰英雄》
~【下載MOD】~
《sven coop》 《虛幻競技場3》 《光暈》 《孤島驚魂》《戰地2》 《戰地2142》 《戰地1942》
【下載地址】
我個人整理的【單機雙人游戲 合作過關游戲 COOP模式游戲 下載大全】希望LZ喜歡:
http://hi..com/%C4%B3x%CB%A7/blog/item/21cb01ccb82aae5b0fb34584.html
(網路空間鏈接)
㈦ c語言射擊小游戲編程問題
int
ShutOne(int
time)
{
//計時清零,
//3秒,2秒,1秒到開始顯示一隨機字元;
//從鍵盤讀入一字元直到是顯示的字版符,超過10次返回負;
//得到結權束時間,
//求得射擊時間TimShut=時間-3000毫秒;
//電腦產生一隨機數Trand,比如time+randomize(1000);//假定1000ms內能完成射擊,這里time(ms)時間是游戲難度,
//返回
:Trand
-
TimShut;
電腦時間》
射擊時間為玩家勝。0,或
負
}
int
main(void)
{
int
x,result=0;
......
for(i=0;
i<10;
i++)
{
x=ShutOne(500);
//難度為
500ms
if(x>0)
result++;
}
if(result==5)
//again
{
x=ShutOne(500);
f(x>0)
result++;
}
if(result》5)
輸出玩家勝;
否則:
玩家負
}
㈧ 怎樣寫一個兩人對戰的黑白棋游戲的C語言源
//-----wlfyrq-----//
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
ints[8][8];//棋盤二維數組
intflag=-1;//當前輪到誰下棋
intwhite=0,black=0;//黑,白棋子數
typedefstruct
{
intx;
inty;
}PT;
PTbuf[10];
intbuf_pos=0;
//設置CMD窗口游標位置
voidsetxy(intx,inty)
{
COORDcoord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
//獲取當前CMD當前游標所在位置
voidgetxy(int*x,int*y)
{
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
COORDcoordScreen={0,0};//游標位置
CONSOLE_SCREEN_BUFFER_INFOcsbi;
if(GetConsoleScreenBufferInfo(hConsole,&csbi))
{
//printf("游標坐標:(%d,%d) ",csbi.dwCursorPosition.X,csbi.dwCursorPosition.Y);
*x=csbi.dwCursorPosition.X;
*y=csbi.dwCursorPosition.Y;
}
}
voidbuf_in(intx,inty)//進入buffer
{
buf[buf_pos].x=x;
buf[buf_pos].y=y;
buf_pos++;
}
PTbuf_out()//從buffer移出
{
returnbuf[--buf_pos];
}
voidprt()//輸出到屏幕
{
white=0;
black=0;
system("cls");
inti,j;
printf("");
for(i=0;i<8;i++)
{
printf("%2d",i+1);
}
printf(" ");
for(i=0;i<8;i++)
{
printf("%2d",i+1);
for(j=0;j<8;j++)
{
switch(s[i][j])
{
case0:
printf("+");
break;
case1:
white++;
printf("○");
break;
case-1:
black++;
printf("●");
break;
}
}
printf(" ");
}
getxy(&i,&j);
setxy(25,4);
printf("○:%d",white);
setxy(25,5);
printf("●:%d",black);
if(white+black==64)//當黑白字總計達到64個,則表示棋盤所有位置均下完
{
setxy(25,6);
if(white>black)//判斷輸贏
{
setxy(30,4);
printf("win!");
}
elseif(black>white)
{
setxy(30,5);
printf("●win!");
}
else
{
printf("peace!");
}
setxy(i,j+2);
exit(0);
}
setxy(i,j);
}
voidset_reverse()//翻轉棋的顏色
{
while(buf_pos>0)
{
buf_pos--;
s[buf[buf_pos].x][buf[buf_pos].y]=0-s[buf[buf_pos].x][buf[buf_pos].y];
}
}
voidleft_up(intx,inty)//左上方向檢索
{
if(x-1>=0&&y-1>=0)
{
if(s[x-1][y-1]==0)
{
buf_pos=0;
}
elseif(s[x-1][y-1]==flag)
{
set_reverse();
}
elseif(s[x-1][y-1]==0-flag)
{
buf_in(x-1,y-1);
left_up(x-1,y-1);
}
}
}
voip(intx,inty)//上--檢索
{
if(x-1>=0)
{
if(s[x-1][y]==0)
{
buf_pos=0;
}
elseif(s[x-1][y]==flag)
{
set_reverse();
}
elseif(s[x-1][y]==0-flag)
{
buf_in(x-1,y);
up(x-1,y);
}
}
}
voidright_up(intx,inty)//右上方向檢索
{
if(x-1>=0&&y+1<8)
{
if(s[x-1][y+1]==0)
{
buf_pos=0;
}
elseif(s[x-1][y+1]==flag)
{
set_reverse();
}
elseif(s[x-1][y+1]==0-flag)
{
buf_in(x-1,y+1);
right_up(x-1,y+1);
}
}
}
voidright(intx,inty)//右--檢索
{
if(y+1<8)
{
if(s[x][y+1]==0)
{
buf_pos=0;
}
elseif(s[x][y+1]==flag)
{
set_reverse();
}
elseif(s[x][y+1]==0-flag)
{
buf_in(x,y+1);
right(x,y+1);
}
}
}
voidright_down(intx,inty)//右下方向檢索
{
if(x+1<8&&y+1<8)
{
if(s[x+1][y+1]==0)
{
buf_pos=0;
}
elseif(s[x+1][y+1]==flag)
{
set_reverse();
}
elseif(s[x+1][y+1]==0-flag)
{
buf_in(x+1,y+1);
right_down(x+1,y+1);
}
}
}
voiddown(intx,inty)//下--檢索
{
if(x+1<8)
{
if(s[x+1][y]==0)
{
buf_pos=0;
}
elseif(s[x+1][y]==flag)
{
set_reverse();
}
elseif(s[x+1][y]==0-flag)
{
buf_in(x+1,y);
down(x+1,y);
}
}
}
voidleft_down(intx,inty)//左下方向檢索
{
if(x+1<8&&y-1>=0)
{
if(s[x+1][y-1]==0)
{
buf_pos=0;
}
elseif(s[x+1][y-1]==flag)
{
set_reverse();
}
elseif(s[x+1][y-1]==0-flag)
{
buf_in(x+1,y-1);
left_down(x+1,y-1);
}
}
}
voidleft(intx,inty)//左--檢索
{
if(y-1>=0)
{
if(s[x][y-1]==0)
{
buf_pos=0;
}
elseif(s[x][y-1]==flag)
{
set_reverse();
}
elseif(s[x][y-1]==0-flag)
{
buf_in(x,y-1);
left(x,y-1);
}
}
}
voidfun(intx,inty)//分別在:左上,上,右上,右,右下,下,左下,左,8個方向檢索
{
buf_pos=0;
left_up(x,y);
buf_pos=0;
up(x,y);
buf_pos=0;
right_up(x,y);
buf_pos=0;
right(x,y);
buf_pos=0;
right_down(x,y);
buf_pos=0;
down(x,y);
buf_pos=0;
left_down(x,y);
buf_pos=0;
left(x,y);
flag=0-flag;//換對方下棋
prt();
}
intmain()
{
inti,j;
for(i=0;i<8;i++)//初始化棋盤
{
for(j=0;j<8;j++)
{
s[i][j]=0;
}
}
//以下四行為設置兩黑,兩白棋子
s[3][3]=-1;
s[4][4]=-1;
s[3][4]=1;
s[4][3]=1;
prt();//輸出
intx,y;
chara,b;
while(1)
{
if(flag==1)//flag為1時,為白棋,flag為-1時,為黑棋
{
printf(" ○:");
}
elseif(flag==-1)
{
printf(" ●:");
}
fflush(stdin);//清空輸入緩沖區
scanf("%c%c",&a,&b);
x=a-'0';//輸入的字元轉換為數字
y=b-'0';
if(s[x-1][y-1]!=0||x>8||x<1||y>8||y<1)//如果輸入的數值不越界
{
prt();
continue;
}
x--;
y--;
s[x][y]=flag;//落子在棋盤上
fun(x,y);//判斷該位置周圍8個方向上棋子的顏色
}
return0;
}
㈨ 用C語言編寫一個雙人雙機五子棋游戲會遇到哪些技術問題
1 數據傳輸的問題;我感覺這個是最主要的問題,要保證數據的實時性、正確性,也就是要選擇一個合適的通訊機制,比如Socket或Remoting, 這也跟你用的語言有關
2 圖形界面的呈現;界面上的響應邏輯要正確,界面最好也得好看一點
㈩ 誰能用C語言編寫出簡單的兩人對戰游戲~!
如果你要源代碼我話,我可以幫你寫
如果你要編寫好的文件的話,直接去下一個小游戲就可以了
先說好,大家都明白這可不是白寫的