很简单用二维字符数组就行了
#include<iostream>
using namespace std;
int main(){
int k=0;
char a[5][5];
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) a[i][j]=' ';
while(1){
cout<<" 三子棋"<<endl;
cout<<" 1 2 3"<<endl;
cout<<" ----- "<<endl;
cout<<"1|"<<a[1][1]<<" "<<a[1][2]<<" "<<a[1][3]<<"|"<<endl;
cout<<"2|"<<a[2][1]<<" "<<a[2][2]<<" "<<a[2][3]<<"|"<<endl;
cout<<"3|"<<a[3][1]<<" "<<a[3][2]<<" "<<a[3][3]<<"|"<<endl;
cout<<" ----- "<<endl;
for(int j=1;j<=3;j++){
int p=0;
for(int i=1;i<=3;i++){
if(a[i][j]!='X') break;
else p++;
}
if(p==3){
cout<<"二号玩家获胜!!!"<<endl;
return 0;
}
}
for(int j=1;j<=3;j++){
int p=0;
for(int i=1;i<=3;i++){
if(a[j][i]!='X') break;
else p++;
}
if(p==3){
cout<<"二号玩家获胜!!!"<<endl;
return 0;
}
}
if(k==9) break;
k++;
int x1,y1,x2,y2;
cout<<"一号玩家(O)请输入(n行m列):";
cin>>x1>>y1;
while(1){
if(a[x1][y1]==' ') break;
else{
cout<<"这个位置已占用,请重新输入!!!"<<endl;
cin>>x1>>y1;
}
}
a[x1][y1]='O';
system("cls");
cout<<" 三子棋"<<endl;
cout<<" 1 2 3"<<endl;
cout<<" ----- "<<endl;
cout<<"1|"<<a[1][1]<<" "<<a[1][2]<<" "<<a[1][3]<<"|"<<endl;
cout<<"2|"<<a[2][1]<<" "<<a[2][2]<<" "<<a[2][3]<<"|"<<endl;
cout<<"3|"<<a[3][1]<<" "<<a[3][2]<<" "<<a[3][3]<<"|"<<endl;
cout<<" ----- "<<endl;
for(int j=1;j<=3;j++){
int p=0;
for(int i=1;i<=3;i++){
if(a[i][j]!='O') break;
else p++;
}
if(p==3){
cout<<"一号玩家获胜!!!"<<endl;
return 0;
}
}
for(int j=1;j<=3;j++){
int p=0;
for(int i=1;i<=3;i++){
if(a[j][i]!='O') break;
else p++;
}
if(p==3){
cout<<"一号玩家获胜!!!"<<endl;
return 0;
}
}
if(k==9) break;
k++;
cout<<"二号玩家(X)请输入(n行m列):";
cin>>x2>>y2;
while(1){
if(a[x2][y2]==' ') break;
else{
cout<<"这个位置已占用,请重新输入!!!"<<endl;
cin>>x2>>y2;
}
}
a[x2][y2]='X';
system("cls");
}
cout<<"------平局------"<<endl;
return 0;
}
你Cell的class究竟要在哪里 在isWon()结束的地方加一个}试试
public char setToken(char c){
token=c;
repaint();
}没有返回char
你用eclipse一打开就看到了错误了
#include <iostream>
#include <string>
using namespace std;
class CGobang //棋子类
{
private:
char chSort; //棋子的类别
int nWin; //赢棋的次数
int nLose; //输棋的次数
static int nDraw; //平局次数
static char achBoard[3][3]; //棋盘
static int nSize; //棋盘的尺寸 nSize X nSize
public:
CGobang(char chsort) //构造函数,决定一方棋子的类别
{
chSort=chsort;
nWin=nLose=nDraw=0;
}
void PlayTurn(void); //走1步棋
int Judge(); //判断是否连成一线,是则返回1,否则返回0
void Win(void); //赢棋
void Lose(void); //输棋
static void Draw(void); //平局
void PrintInfo(void); //输出总体情况
static void PrintBoard(void); //输出棋盘
static int GetFull(void); //判断棋盘是否已布满棋子
static void InitialBoard(void); //初始化棋盘
};
char CGobang::achBoard[3][3];
int CGobang::nSize = 3;
int CGobang::nDraw = 0;
void CGobang::Draw()
{
cout << "\n\n\t\t平局!\n\n";
nDraw++;
}
void CGobang::InitialBoard() //初始化棋盘
{
for(int i=0;i<nSize;i++)
for(int j=0;j<nSize;j++)
achBoard[i][j]=' ';
}
void CGobang::PrintBoard() //输出棋盘
{
cout << endl;
cout << " 1 2 3 " << endl;
cout << "1 " << achBoard[0][0] << " | " << achBoard[0][1] << " | " << achBoard[0][2] << endl;
cout << " ---|---|---" << endl;
cout << "2 " << achBoard[1][0] << " | " << achBoard[1][1] << " | " << achBoard[1][2] << endl;
cout << " ---|---|---" << endl;
cout << "3 " << achBoard[2][0] << " | " << achBoard[2][1] << " | " << achBoard[2][2] << endl;
cout << endl;
cout << endl;
}
int CGobang::GetFull() //判断棋盘是否布满棋子,若是返回1
{
for(int i=0;i<nSize;i++)
for(int j=0;j<nSize;j++)
if(achBoard[i][j]!=' ')
return 0;
return 1;
}
void CGobang::Win() //赢棋
{
cout << "\n\n\t\t"<<chSort<<"方获胜!\n\n";
nWin++;
}
void CGobang::Lose() //输棋
{
nLose++;
}
void CGobang::PlayTurn(void) //走1步棋
{
int nRow,nCol;
cout <<"现在该 "<<chSort<<" 方下棋,请输入棋盘坐标(x,y):";
do
{
cin >> nRow >> nCol; //输入坐标
if(nRow>nSize || nCol>nSize) //判断坐标越界
cout <<"输入的坐标越界,x与y的范围应小于等于"<<nSize<<",请重新输入\n";
else if(achBoard[nRow-1][nCol-1]!=' ') //判断坐标合理
cout <<"棋盘("<<nRow <<" ,"<<nCol <<")处已有棋子,请重新输入\n";
else
{
achBoard[nRow-1][nCol-1]=chSort; //在坐标处放上棋子
break; //退出循环
}
}while(1);
}
int CGobang::Judge() //判断是否棋子连成一线,若是返回1
{//以下是各种可能连成一线的情况
if(achBoard[0][0]==chSort && achBoard[1][1]==chSort && achBoard[2][2]==chSort)
return 1;
else if(achBoard[2][0]==chSort && achBoard[1][1]==chSort && achBoard[0][2]==chSort)
return 1;
else if(achBoard[0][0]==chSort && achBoard[1][0]==chSort && achBoard[2][0]==chSort)
return 1;
else if(achBoard[0][1]==chSort && achBoard[1][1]==chSort && achBoard[2][1]==chSort)
return 1;
else if(achBoard[0][2]==chSort && achBoard[1][2]==chSort && achBoard[2][2]==chSort)
return 1;
else if(achBoard[0][0]==chSort && achBoard[0][1]==chSort && achBoard[0][2]==chSort)
return 1;
else if(achBoard[1][0]==chSort && achBoard[1][1]==chSort && achBoard[1][2]==chSort)
return 1;
else if(achBoard[2][0]==chSort && achBoard[2][1]==chSort && achBoard[2][2]==chSort)
return 1;
else
return 0; //没有连成一线则返回0
}
void CGobang::PrintInfo(void) //打印总体情况
{
cout <<"Side "<<chSort<<"方共计赢 "<<nWin<<" 局,输 "<<nLose<<" 局,平 "<<nDraw<<" 局。"<<endl;
}
void PrintRule(void) //打印规则
{
cout << "\t\t欢迎使用三子连珠游戏!" << endl << endl;
cout << "\t游戏规则:" << endl;
cout << "\t1每1步输入要下棋的格子的x,y坐标,按Enter键\n";
cout << "\t2有1方首先3个棋子连成一线即判获胜\n";
cout << "\t3当棋子布满棋盘但仍无获胜方即为平局\n";
cout << "\t4X方先行\n";
cout << "\n\n\t\t请按任意键开始下棋!\n\n";
}
int JudgePlay(CGobang & SideX,CGobang & SideO) //每下1步要进行输赢的判断,有结果则返回1
{
if(SideXJudge()) //X方获胜
{
SideXWin();
SideOLose();
return 1;
}
else if(SideOJudge()) //O方获胜
{
SideOWin();
SideXLose();
return 1;
}
else
return 0;
}
void Play(CGobang & SideX,CGobang & SideO) //开始一局游戏
{
while(1)
{
CGobang::PrintBoard(); //输出棋盘
SideXPlayTurn(); //X方下棋
if(JudgePlay(SideX,SideO)) //判断输赢
break;
if(CGobang::GetFull()) //判断是否平局
{
CGobang::Draw();
break;
}
CGobang::PrintBoard(); //输出棋盘
SideOPlayTurn(); //O方下棋
if(JudgePlay(SideX,SideO)) //判断输赢
break;
if(CGobang::GetFull()) //判断是否平局
{
CGobang::Draw();
break;
}
}
}
int main(void)
{
CGobang SideX('X'),SideO('O'); //定义两个棋子类对象,分别代表X方与O方
PrintRule();
cinget();
string strChoice;
do
{
CGobang::InitialBoard(); //初始化棋盘
Play(SideX,SideO); //开始下一局
cout << "是否继续(Y/N)?";
cin >> strChoice;
}while(strChoice == "Y" || strChoice == "y");
SideXPrintInfo();
SideOPrintInfo();
cout << "\n\n\t欢迎再次使用三子连珠游戏!" << endl << endl;
return 0;
}
三子棋怎么赢
先下者才能赢。先下中间,在下一个角(这个叫的对角没有对方的子)然后步步紧逼,才能胜利。
三子棋怎么玩三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。
先手:正中间,对面如果走边中间位置,就落子在紧贴对方棋子的角位置。对方必定堵你,然后你就落子在刚才自己角位置棋子的旁边(边中间位置),必赢。
如果对方也会玩,就会先落子在角位置,基本最后就是和棋。
后手:对方中间,你就角位置,然后堵对方就行。只要对方不傻,就是和棋。
方格纸三子棋怎么样虽然画面简单,玩法简单,但是我就是很喜欢的说,很像上学的时候在作业本上画出的风格,那时总是偷偷的把本子传来传去和同学一起玩,好怀念~~(占领中间位置才是王道啊)
怎么用python写三子棋并显示空位lude<stdioh>#include<stdlibh>#include<timeh> char arr[3][3] = { 0 }; 直接定义外部变数所有的函式可以直接使用 因为考虑到棋盘大小是固定的int size = 9; 棋盘大小固定 每下一个子都会使可以下子的容量-1void ches oard() 列印棋盘{ int i = 0, j = 0; printf(" | | /n"); for (i = 0; i < 3; i++) { printf("_%c_|_%c_|_%c_/n", arr[i][0], arr[i][1], arr[i][2]); 棋盘对应位置下棋 if (i < 2) printf(" | | /n"); }}void player() 玩家下棋{ int m = 0, n = 0; printf("player(@):"); 输入的是对应的座标 scanf_s("%d%d", &m, &n); 玩家输入的座标必须在范围内并且不能是被下过的地方 if (m<1 || m>3 || n<1 || n>3 || arr[m - 1][n - 1] != ' ') { printf("this place can not play!/n"); 如果不符合要求则继续呼叫这个函式 player(); } else { arr[m - 1][n - 1] = '@'; 将棋子放入相应的内容 棋盘容量-1 size--; }}void puter() 电脑下棋{ printf("puter(#):/n"); int m = 0, n = 0; srand(time(NULL)); 电脑的座标是随机产生的 以时间为种子 m = rand() % 3; 对3取余产生0-2的随机数赋给阵列下标 n = rand() % 3; while (arr[m][n] != ' ') 如果产生的
用flash cs4制作三子棋程式码怎么写
同学哪个学校的 求共享
五子棋白棋怎么赢这个游戏白黑不都一样吗,要看自己的技术的,如果你技术不好,黑白不都一样
五子棋怎么赢五子棋提升棋力除了看棋谱,多下棋,再没什么好方法了。如果硬要说一条,那就是多思考,提高自己的计算能力!
要是你经常在网上下棋,那就用 ORC 。那是真正能提升能力的地方。ORC里高手云集,定期比赛,最重要的事它有“反软体”功能,开着“黑石”是不可能在ORC下棋的!
我建议你买一本比较基础的五子棋书(这个书店有卖),再买一副好棋盘,照著书在盘上下棋,多揣摩揣摩作者的话,体会 做棋 的技巧,时间长了棋力就会有个质的飞跃。(棋谱要看,棋要多下,可是一定要有效,不要做无用功哦!) 要是你嫌这样麻烦,也可以下载“黑石”软体,登入 rifchina (中国连珠网),上面内容很多的。
另外,如果你想成为五子棋高手,不知道基础的定式是不行的,你可以通过定式掌握很多有效的攻防技巧。各个开局的基本定式应做到心中有数,但是实战中 计算能力 会发挥主要作用。总之“计算为主,定式为辅”。
最后,下棋很考验人的耐性,五子棋虽然规则简单,但下棋能力的提升不是在短时间内能够完成的,这需要经验,等你练到一定程度,有了“棋感”的时候,在联众有规则的房间里,就可以鹤立鸡群了!
五子棋怎么算赢?五子连成一线,横、竖、斜线都可以
谁有java 的三子棋 要用按钮元件extends jpont 很好做
怎么用eclipse的虚拟机器执行三子棋的程式在eclipse上执行,在eclipse执行android程式,虚拟机器无反应,是后台执行出错导致。正确的执行虚拟机器的方法:
① 手机设定:设定->开发人员选项->勾选“USB除错”。
②安装驱动:将手机和电脑用资料线连线好之后,windows系统中如果安装“360手机助手”或者“豌豆荚”的话,会自动为手机安装驱动,确认安装,并重启电脑。
③开启命令列可以确认是否安装好驱动
如下图所示:
如图所示已经成功安装驱动。
④在eclipse中进行配置
选单栏Run ->Run Configurations
选择Target选项卡,勾选“Always prompt to pick device”,选择右下角的Apply -> Close
⑤执行程式:选择专案->右击 ->Run As -> Applications
然后d出一下视窗:
点选OK就可以执行程式了
控制台里显示资讯:
[2016-04-15 13:41:45 - Demo2] ------------------------------[2016-04-15 13:41:45 - Demo2] Android Launch![2016-04-15 13:41:45 - Demo2] adb is running normally[2016-04-15 13:41:45 - Demo2] Performing hsdemo2MainUI activity launch[2016-04-15 13:41:48 - Demo2] Uploading Demo2apk onto device '087A4C38391F'[2016-04-15 13:41:48 - Demo2] Installing Demo2apk[2016-04-15 13:41:51 - Demo2] Suess![2016-04-15 13:41:51 - Demo2] Starting activity hsdemo2MainUI on device 087A4C38391F[2016-09-15 13:41:52 - Demo2] ActivityManager: Starting: Intent { act=androidintentactionMAIN cat=[androidintentcategoryLAUNCHER] cmp=hsdemo2/MainUI }说明执行程式成功。
column自己定,我给个中文的参照:
用户Id,主键
胜利局数:int
失败局数:int
平局:int
总分:int
上此日期:date
-------------------------
ok,表好了,save,load你要的数据就可以了。。。
推荐读的书:
陈良乔《我的第一本C++书》:这本书上的代码相当规范,有助于楼主养成良好的软件开发习惯。
嗯,我给你按从易到难的顺序设计一个清单,你照着做做试试,一定会大有收获的
/ C语言阶段 /
1石头剪刀布: 这是入门级别的,实现非常简单。
目标:初步掌握C++语言的结构
写这个游戏时,可以充分考虑一下如何将游戏做的更完美?比如:给电脑设计一定的策略而不是随机抽取?如何记录比赛结果?如果三个人玩结果又会怎样?你的程序是否能轻松地从双人模式转换到三人模式?通过以上问题,逐渐了解C++语言的结构及特点。
2猜数字(含选择菜单)
目标:学会使用数组,以及游戏的体系结构设计
注意锻炼随机数的使用
3Tit - Tat(三子棋)
目标:初步掌握策略类游戏的算法设计
三子棋的算法非常简单,楼主只要能让电脑在任何情况下都不会输就算完成任务!
4大型成长类游戏(模仿大富豪或者什么 “皇后养成计划”等等,就是每天做各种事情,不断升级,获得奖励之类的)
目标:这是你做出的真正意义上的第一个游戏!独立完成一个大型程序,能极大提升你的自信心,并且使你对大型程序开发中的架构与调试了然于胸。
/ C++阶段 /
5纸牌游戏(或麻将游戏)
目标:掌握C++语言的面向对象编程方法。熟悉类和泛型编程模版STL的使用;掌握多文件项目编译的方法。
当你写完4之后,你会发现用原来的C语言写一大堆函数的做法已经有点力不从心了……是时候换更强大的武器了!可以模拟任何一种游戏规则,但是最好把纸牌做一个类封装起来,在内部提供一个函数根据楼注定的规则来判断出牌是否合理,否则一旦游戏规则改变,整个代码的改动难度相当大!
6高级策略类游戏:黑白棋
目标:提升对电脑AI设计的理解,掌握基本的算法和数据结构(比较有用的是:基于栈的DFS深度优先搜索,迭代加深搜索,A启发式搜索,双置换表等)。
挑战你的智力,发挥你的创意!此作业是某重点高校计算概论课的大作业,完成了它,你就真正成为了游戏设计高手!
7即时类游戏:贪吃蛇
目标:掌握即时类游戏的设计方法和图形界面 *** 作。
还在cmd的黑白屏幕下编程么?我们给程序加点颜色吧……
贪吃蛇的原理实现很简单,但它是一款即时类游戏,需要同时处理玩家从键盘的输入和控制蛇体移动。所以对代码的质量有较高要求(否则游戏会不停卡壳,让你很不爽)
编完上面7个游戏,不能说你真正掌握了游戏设计。但无论对怎样复杂的大型游戏,你都知道为了实现这个游戏,需要做哪些事情;这个游戏的难点和关键点在哪里。这样,你就无人可敌了!
附送源程序包一个,里面包含了上述提到的某些游戏的代码,仅供参考!楼主也能知道我当年是怎么一路摸爬滚打过来的了,哈哈~
以上就是关于三子棋c++代码!!急!!全部的内容,包括:三子棋c++代码!!急!!、非法表达式的开始。需要为class interface enum、用C语言设计一个“三子棋”的游戏,要求用上下左右光标控制。要程序源代码!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)