刚刚用C4编了一个小游戏,求大神指点
c4droid吧
全部回复
仅看楼主
level 5
132泡沫 楼主
/*黑白棋_v2.1*/
/*修复 同一地方能下不同棋子的重大bug*/
/*修复 时不时报错不能下子且又改变棋子颜色的重大bug*/
/*优化 棋盘界面*/
/*由 132泡沫 创作,转载请注明出处*/
#include <stdio.h>
#include<conio.h>
#define BOARDSIZE 8
int OthelloBoard[BOARDSIZE + 1][BOARDSIZE + 1];
int black = 1;
int white = 2;
int Null = 0;
int inx;
int iny;
int B=0;//设置全局标记
void newBoard();
void importwight();
void importblack();
void Boardnumber();
void showBoard();
int opposite(int BorW){//取反
if (BorW==black)
return white;
if (BorW==white)
return black;
}
/* 棋盘初始化 */
void newBoard() {
int x, y;
for (x = 1; x <=BOARDSIZE; x++)
for (y = 1; y <= BOARDSIZE; y++)
OthelloBoard[x][y] = Null;
OthelloBoard[4][4] = 1;
OthelloBoard[4][5] = 2;
OthelloBoard[5][5] = 1;
OthelloBoard[5][4] = 2;
}
/* 黑棋坐标输入 */
void importblack() {
loop:
printf("black move\n");
printf("this is x path:");
scanf("%d", &inx);
printf("this is y path:");
scanf("%d", &iny);
if ((OthelloBoard[inx][iny] == black)||( OthelloBoard[inx][iny] == white)){
printf("输入有误,请重新输入\n");
goto loop;
}
OthelloBoard[inx][iny] = black;
}
/* 白棋坐标输入 */
void importwhite() {
loop:
printf("white move\n");
printf("this is x path:");
scanf("%d", &inx);
printf("this is y path:");
scanf("%d", &iny);
if ((OthelloBoard[inx][iny] == black)||( OthelloBoard[inx][iny] == white)){
printf("输入有误,请重新输入\n");
goto loop;
}
OthelloBoard[inx][iny] = white;
}
/*****************同化 扫描****************/
/*左边同化*/
void change_left(int BorW){
int i,x;
if (OthelloBoard[inx-1][iny]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,x=inx;x>0;x--,i++){//确保可被同化
if (OthelloBoard[x][iny]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx-i][iny]!=0;i--){
OthelloBoard[inx-i][iny]=BorW;//同化
}
}
}
}else
B++;
}
/*右边同化*/
void change_right(int BorW){
int i,x;
if (OthelloBoard[inx+1][iny]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,x=inx;x<=BOARDSIZE+1;x++,i++){//确保可被同化
if (OthelloBoard[x][iny]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx+i][iny]!=0;i--){
OthelloBoard[inx+i][iny]=BorW;//同化
}
}
}
}else
B++;
}
/*上面同化*/
void change_up(int BorW){
int i,y;
if (OthelloBoard[inx][iny-1]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,y=iny;y>0;y--,i++){//确保可被同化
if (OthelloBoard[inx][y]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx][iny-i]!=0;i--){
OthelloBoard[inx][iny-i]=BorW;//同化
}
}
}
}else
B++;
}
/*下面同化*/
void change_down(int BorW){
int i,y;
if (OthelloBoard[inx][iny+1]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,y=iny;y<=BOARDSIZE+1;y++,i++){//确保可被同化
if (OthelloBoard[inx][y]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx][iny+i]!=0;i--){
OthelloBoard[inx][iny+i]=BorW;//同化
}
}
}
}else
B++;
}
/*左上同化*/
void change_left_up(int BorW){
int i,x,y;
if (OthelloBoard[inx-1][iny-1]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,x=inx,y=iny;(x>0)&&(y>0);x--,y--,i++){//确保可被同化
if (OthelloBoard[x][y]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx-i][iny-i]!=0;i--){
OthelloBoard[inx-i][iny-i]=BorW;//同化
}
}
}
}else
B++;
}
/*右上同化*/
void change_right_up(int BorW){
int i,x,y;
if (OthelloBoard[inx+1][iny-1]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,x=inx,y=iny;(x<=BOARDSIZE+1)&&(y>0);x++,y--,i++){//确保可被同化
if (OthelloBoard[x][y]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx+i][iny-i]!=0;i--){
OthelloBoard[inx+i][iny-i]=BorW;//同化
}
}
}
}else
B++;
}
/*左下同化*/
void change_left_down(int BorW){
int i,x,y;
if (OthelloBoard[inx-1][iny+1]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,x=inx,y=iny;(x>0)&&(y<=BOARDSIZE+1);x--,y++,i++){//确保可被同化
if (OthelloBoard[x][y]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx-i][iny+i]!=0;i--){
OthelloBoard[inx-i][iny+i]=BorW;//同化
}
}
}
}else
B++;
}
/*右下同化*/
void change_right_down(int BorW){
int i,x,y;
if (OthelloBoard[inx+1][iny+1]==opposite(BorW)){//判断周围是否有相反的棋子
for (i=0,x=inx,y=iny;(x<=BOARDSIZE+1)&&(y<=BOARDSIZE+1);x++,y++,i++){//确保可被同化
if (OthelloBoard[x][y]==BorW&&i>1){//确定被同化的子
for (i;i>0&&OthelloBoard[inx+i][iny+i]!=0;i--){
OthelloBoard[inx+i][iny+i]=BorW;//同化
}
}
}
}else
B++;
}
/*同化 扫描*/
void change(BorW){
change_left(BorW);
change_right(BorW);
change_up(BorW);
change_down(BorW);
change_left_up(BorW);
change_right_up(BorW);
change_left_down(BorW);
change_right_down(BorW);
}
/******************************************/
2015年11月06日 08点11分 1
level 5
132泡沫 楼主
/* 打印棋盘 */
void showBoard() {
int x, y;
printf(" 1 2 3 4 5 6 7 8 x\n");
for (y = 1; y <= BOARDSIZE; y++) {
printf(" %d", y);
for (x = 1; x <= BOARDSIZE; x++) {
if (OthelloBoard[x][y] == black)
printf("○");
else if (OthelloBoard[x][y] == white)
printf("●");
else
printf("十");
}
printf("\n");
}
printf(" y");
printf(" 政哥出品\n");
printf(" 版权所有,违版必究\n");
}
int main() {
newBoard();// 棋盘初始化
showBoard();//打印棋盘
printf("black first\n");
while(1){
clrscr();
loop1:
showBoard();//打印棋盘
importblack();// 黑棋坐标输入
clrscr();
change(black);//同化 扫描
if (B>=8){
printf("输入无效,四周应至少有一个不同的子,请重新输入\n");
OthelloBoard[inx][iny]=Null;
B=0;//确保下一次扫描时数据准确
goto loop1;
}
B=0;//确保下一次扫描时数据准确
showBoard();//打印棋盘
clrscr();
loop2:
showBoard();//打印棋盘
importwhite();//白棋坐标输入
clrscr();
change(white);//同化 扫描
if (B>=8){
printf("输入无效,四周应至少有一个不同的子,请重新输入\n");
OthelloBoard[inx][iny]=Null;
B=0;//确保下一次扫描时数据准确
goto loop2;
}
B=0;//确保下一次扫描时数据准确
showBoard();//打印棋盘
}
}
2015年11月06日 08点11分 2
level 13
赞一个~^ω^
2015年11月06日 09点11分 3
欢迎欢迎[太开心]
2015年11月06日 17点11分
level 6
我们不追求信徒,我们追求信誉
2015年11月06日 09点11分 4
我也仅仅只想锻炼一下自己的能力[黑线]
2015年11月06日 17点11分
level 7
那,我复制粘贴后可以用么
2015年11月06日 10点11分 5
level 7
真的可以唉,然后怎么才能玩啊
2015年11月06日 10点11分 6
level 7
好想知道怎么才能玩
2015年11月06日 10点11分 7
输入x轴和y轴坐标啊[滑稽]
2015年11月06日 17点11分
@132泡沫 [乖]不会啊,教教我呀
2015年11月07日 05点11分
@千里寻绒 先输入x轴坐标,回车,在输入y轴坐标就行啦
2015年11月09日 03点11分
@132泡沫 原来如此
2015年11月09日 13点11分
level 4
好像很牛逼的样子,但是我不懂
2015年11月06日 11点11分 8
看习惯了不就行了[滑稽]
2015年11月06日 17点11分
level 9
用二维数组表示坐标然后直接做一个可以移动的指针出来放棋子或许更好,实现可视化了
2015年11月06日 16点11分 9
什么可视化?
2015年11月06日 17点11分
求指点
2015年11月06日 17点11分
回复 132泡沫 :我做了一个简单的绘制字符图形的程序,或许你可以借鉴一下[哈哈]
2015年11月07日 04点11分
#include <stdio.h> #
include
#include <ctype.h> #
include
#include <time.h> #
define He 27 #define W 40 int weig
2015年11月07日 04点11分
level 13
慢慢看你们用C极其复杂地玩GUI[滑稽]
2015年11月07日 11点11分 11
GUI……没听过[黑线]
2015年11月09日 03点11分
1