㈠ 怎样写一个两人对战的黑白棋游戏的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语言编写出简单的两人对战游戏~!
如果你要源代码我话,我可以帮你写
如果你要编写好的文件的话,直接去下一个小游戏就可以了
先说好,大家都明白这可不是白写的