⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 一个在tc3.0下面写的棋类游戏 很经典 值得好好研究
💻 TXT
字号:
GAME -BOX
——程序说明
  本程序包含三个小游戏:弹球、五子棋和黑白棋。
  作者是2000级13班:董子龙  费伽
  我们为自己的组合取名为WAVE STAR (波星)工作室  。
  程序用TC3.0完成。编程序言:C 。编写程序的硬件环境是:CPU :雷鸟850
RAM:256M,显卡:GEFORCE MX ,操作系统WIN98 SE。
   主要文件:
        main.cpp        主界面:费伽完成
        realball.cpp       弹球:费伽主创,董子龙辅助完成。
        realsave.cpp      弹球存档:董子龙完成。
        apple.cpp         黑白棋:董子龙完成。
        wuzi.cpp         五子棋: 费伽完成。
辅助文件:
    ourmouse.cpp     鼠标函数。
    bmp16.cpp        16色图片显示函数。
编写过程简介:
黑白棋与五子棋原本并非为了大作业而写,都是我们在学习之余为了多练习c语言而自己写的程序,而弹球则是我们为大作业专门写的。其中五子棋还曾在系计算机协会5月举办的程序设计比赛中获得了第三名(五子棋类)。
     
GAME-BOX 的使用方法。
程序主要用鼠标控制,首先进入主界面:可选择三个游戏,以及退出。鼠标在主界面的不同位置屏幕下方会有相应的提示。
弹球:
用鼠标控制一块绿色的板来接住落下的球,并靠球的反弹来打掉上方的砖块。粉红色的砖块要打两次,黄色的砖块要打一次。左侧有当前分数,当前关数,以及玩家还有几个球可用。
当鼠标移出游戏区域时,会暂停当前游戏,并显示鼠标。左下方有两个按钮,按下“存储”可进入存储界面,可以保存当前的游戏,或读出以前的存档。按下“退出”可随时退出游戏。
 五子棋:
 这个五子棋有着初级的人工智能,可以与人对弈。程序界面很简单——有一个棋盘以及五个按钮。分别是:
    1.开局;
    2.换先;
    3.悔棋(限两步);
    4.人v机(选择人机对战还是人人下);
    5.退出。
 每次按开局,开始游戏。执黑棋者先走,无五手两打,无禁手。长链不算负,也不判胜。结束后,按换先后再按开局,可以交换先手  
黑白棋:
黑白双方交替落子;将落子与同色子间的异色子吃去(变为同色);当双方皆无落子处,结束;余子多者胜。可以人机对弈。主要功能:
1.悔棋(F1)
2.人人对弈(F2)	
3.人机对弈(F3)
4.选择先后手(F4)
5.选择难度(F5)
6.退出(Esc)
    
  各主要模块简介:
.四个鼠标使用函数:int initmouse();void showmouse();void hidemouse();void readmouse(int *f,int *x,int *y);不赘述。
黑白棋主要函数:
1.规则:
void newgame();   开始新游戏                     
int scan(int r,int c); 判断鼠标出是否可落子
void eatchess(int initrow,int initcolumn); 吃子
void realeat(int irow,int icolumn,int crow,int ccolumn,int direct); 真的吃了
void addhead(void);   悔棋的链表头                    
void add(struct backstep *head); 加一个节点至链表
void del(struct backstep *head,int single); 删一个节点至链表
2.菜单:
void mvsmcontrol(void);  人人对弈       
void mvsccontrol(void);   人机对弈      
void backcontrol(int single);     悔棋   
void esccontrol(void); 退出
3.电脑:
void think(int pcomx,int pcomy,int mind,int *presult); 递归函数
void computer1(void);  用递归落子
void decidedepth();  决定递归深度
void computer2();   用另一种方法落子
弹球部分:
  int paint_ball(BALL *,USER *);在过程中不断绘制球
  int paint_treasure(TREASURE *,BORDER *);绘制落下“宝物”,有加速与减速两种。
  void paint_border(BORDER *);根据鼠标的位置,绘制鼠标
  void paint_blocks();在每一关开始时,绘制砖块。
  void initblocks(int);随机的生成砖块的数组。
  void loadpictures();开始阶段,利用getimage函数得到一些素材的函数。
  void freemem_realball();退出程序时,释放被申请的空间。
  void set_screen();绘制界面。
  void show_score();当分数发生变化时,重绘分数。
  void show_life();重绘玩家所剩的球数。
  int play();包含的弹球的游戏主循环。
  int pause();暂停循环,当鼠标移出游戏区域时调用。
  int realball();主函数。
编程的主要思路:通过每次的do……while循环,不停的重绘运动的物体,造成动画效果。当碰到其他物体时,改变其速度的符号,造成“弹”的效果。
 
五子棋部分:    
主要函数介绍:
.四个鼠标使用函数:int initmouse();void showmouse();void hidemouse();void readmouse(int *f,int *x,int *y);不赘述。
1绘图函数:
  void paint_qipan();
  int paint_qizi(int x,int y,int who);
  void paint_button(BUTTON Button); 
  void setup_screen();
  void ButtonDown(BUTTON button);
2能函数:
  判断是否成五子:int iffive(int i,int j, int who);
  对当前点所能成的各种情况进行判断,
  并打分:MARK evaluate(int i,int j,int who);
  搜索棋盘上最好点,负责电脑走子:int ai(int depth,int who);
3功能函数:
  开始按钮按下时调用
  (主要负责棋盘重绘,及初始化): void StartBtn_clicked();
  悔棋按钮按下时调用: void RegretBtn_clicked(void);
  负责接受鼠标事件,
  并调用各功能函数。void anytoprocess(int x,int y,int f);
    对智能部分的简介:
  整个棋盘是一个15*15的数组。黑棋点标1,白棋点标-1,空点标0。
函数evaluate对传入的x、y位置点,who所代表的一方进行局面判断。看由xy点可以形成的“五”,“四”,“三”……各有多少。再根据事先规定的分值给这一步打分。返回的是mark结构。该结构包括各种局面(如有几个冲四),及总分。
  在函数ai(……)中对盘面进行搜索,对未走过子的点用evaluate打分。找到最佳点后下子。
  这中间涉及到ai的递归调用(又其参数depth,控制深度),但由于目前这个算法还不成型,对智能并无提高,所以在此略去。
   
作者:费伽 董子龙
2001/6/12

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -