/****************************************************************************
《WHITE AND BLACK》FOR WINDOWS 3.X
《黑白棋》FOR WINDOWS 3.X
Visual c++版本。
作者:邓庭 1997.5
*****************************************************************************
PROGRAM: wbc.c
****************************************************************************/
#include <windows.h>
#include <stdlib.h>
#include "d:\wince300\others\ddtk30\tools\inc\time.h"
#include <string.h>
#include <mmsystem.h>
#include "resource\resource.h"
#include "wbc.h"
/****************************************************************************/
/* 宏的定义 */
/****************************************************************************/
#define UnitSize 32
#define ChequerSize UnitSize*9
#define SideSize 16
/****************************************************************************/
/* 声明公用变量 */
/****************************************************************************/
char ScorePos[8][8]={ 9, 7, 9, 8, 8, 9, 7, 9,
7, 1, 2, 2, 2, 2, 1, 7,
9, 2, 5, 4, 4, 5, 2, 9,
8, 2, 4, 1, 1, 4, 2, 8,
8, 2, 4, 1, 1, 4, 2, 8,
9, 2, 5, 4, 4, 5, 2, 9,
7, 1, 2, 2, 2, 2, 1, 7,
9, 7, 9, 8, 8, 9, 7, 9
};
HANDLE hInst; //应用程序句柄
HWND hWnd; //主窗口的句柄
enum{FastDelay=0,NormalDelay=10,SlowDelay=100} DelayTime=NormalDelay; //用来控制游戏不速度
enum{title,game,gameover} GameIsOn=title;
enum{fan,man,ani}AniCurIsOn=fan;
#define Black -1
#define White 1
char Mover;
char Level=2; //游戏难度等于0至4;?
BOOL SoundIsOn=TRUE;
BOOL MusicIsOn=TRUE;
struct {
char X;
char Y;
char Mover;
char OREN[8];
} SaveStep[60]; //保存手
char Pos[8][8];
char StepNu; //手数
char StepMaxNu;
unsigned ChequerX,ChequerY; //棋盘的坐标
char PlayerName[2][11];// 10 bytes
char PlayerScore[2];
BOOL Player[2]={TRUE,FALSE};
char DialogString[120];
char *TitleString=
"用兵关系国兴亡,\n\n布子尤宜较短长。\n\n忍辱偷生图复辟,\n\n聚雄招义自豪强。\n\n弃边求角争军要,\n\n\
以少胜多赖计良。\n\n入敌钻营风险小。\n\n寻机内应打江山。\n\n\n\n\n\n\n\n\n\n\n\
《黑白棋》\n\n射日工作室\n\n1998-1999";
HCURSOR hB0Cur;
HCURSOR hB1Cur;
HCURSOR hB2Cur;
HCURSOR hB3Cur;
HCURSOR hW0Cur;
HCURSOR hW1Cur;
HCURSOR hW2Cur;
HCURSOR hW3Cur;
HCURSOR hCapCur;
HCURSOR hFanCur;
HICON hSheriIco;
HBITMAP hMemBmp;
HBITMAP hWorkBmp;
HBITMAP hBombBmp;
HBITMAP hWhiteBmp;
HBITMAP hBlackBmp;
HBITMAP hMaskBmp;
HBITMAP hChequerBmp;
HDC BackDC; //窗口使用句柄
HDC ManDC; //棋子的句柄
HDC MaskDC;
HDC BombDC; //变的公用句柄
HDC MemDC; //工作区设备
HDC WorkDC; //工作区设备
HDC ChequerDC;
int idTimer; //一个时钟事件资源?
char anicurNU;
int TitleTop=300;
/****************************************************************************/
/****************************************************************************/
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{ MSG msg;
WNDCLASS wc;
if (hPrevInstance!=0) return 0; //防重载
hInst=hInstance;
wc.style =CS_VREDRAW | CS_HREDRAW ;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon (hInstance,"IDI_WBC");
wc.hCursor = NULL; //LoadIcon(NULL,NULL);
wc.hbrBackground = GetStockObject(LTGRAY_BRUSH);
wc.lpszMenuName = "IDM_WBC";
wc.lpszClassName = "WbcWClass";
if (RegisterClass(&wc)==0) return 0;
hWnd=CreateWindow("WbcWClass",
MyName,
NULL,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if (hWnd==0) return 0;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/****************************************************************************/
LRESULT FAR PASCAL __export MainWndProc(HWND hWnd,UINT message,
WPARAM wParam,LPARAM lParam)
{ PAINTSTRUCT pAintstruct;
HDC PaintDC;
FARPROC lpProc;
switch (message) {
case WM_CREATE:
SetWindowPos(hWnd,HWND_TOP,0,0,450,360,SWP_NOMOVE); //设置主窗口的启动大小
strcpy(PlayerName[0],"人脑");
strcpy(PlayerName[1],"电脑");
hB0Cur= LoadCursor(hInst,"IDC_B0");
hB1Cur= LoadCursor(hInst,"IDC_B1");
hB2Cur= LoadCursor(hInst,"IDC_B2");
hB3Cur= LoadCursor(hInst,"IDC_B3");
hW0Cur= LoadCursor(hInst,"IDC_W0");
hW1Cur= LoadCursor(hInst,"IDC_W1");
hW2Cur= LoadCursor(hInst,"IDC_W2");
hW3Cur= LoadCursor(hInst,"IDC_W3");
hCapCur=LoadCursor(hInst,"IDC_CAP");
hFanCur=LoadCursor(hInst,"IDC_FAN");
hSheriIco=LoadIcon(hInst,"IDI_SHERI");
hMemBmp =CreateCompatibleBitmap(GetDC(hWnd),UnitSize,UnitSize);
hWorkBmp=CreateCompatibleBitmap(GetDC(hWnd),UnitSize,UnitSize);
hBombBmp=LoadBitmap(hInst,"IDB_BOMB");
hWhiteBmp=LoadBitmap(hInst,"IDB_WHITE");
hBlackBmp=LoadBitmap(hInst,"IDB_BLACK");
hMaskBmp=LoadBitmap(hInst,"IDB_MASK");
hChequerBmp=CreateCompatibleBitmap(GetDC(hWnd),UnitSize*9,UnitSize*9);
BackDC=GetDC(hWnd);
ManDC =CreateCompatibleDC(BackDC);
MaskDC=CreateCompatibleDC(BackDC);
BombDC=CreateCompatibleDC(BackDC);
MemDC =CreateCompatibleDC(BackDC);
WorkDC=CreateCompatibleDC(BackDC);
ChequerDC=CreateCompatibleDC(BackDC);
SelectObject(MaskDC,hMaskBmp);
SelectObject(BombDC,hBombBmp);
SelectObject(MemDC,hMemBmp);
SelectObject(WorkDC,hWorkBmp);
SelectObject(ChequerDC,hChequerBmp);
idTimer = SetTimer(hWnd, NULL,200,(FARPROC)NULL);
if (mciSendString("open data\\title.mid type sequencer alias mymid","",0,0)!=NULL){
MusicIsOn=FALSE;
CheckMenuItem(GetMenu(hWnd),ID_OPTION_MUSIC,MF_UNCHECKED);
}else{mciSendString("play mymid from 0","",0,0); }
break;
case WM_TIMER:TimerRun(); break;
case WM_PAINT:
PaintDC=BeginPaint(hWnd,&pAintstruct);
if (GameIsOn!=title){
RefreshChequerAndMan(PaintDC);
RefreshScore(PaintDC);
RefreshDialog(PaintDC);
}else{ Title(PaintDC);}
EndPaint(hWnd,&pAintstruct);
return (DefWindowProc(hWnd, message, wParam, lParam));
case WM_COMMAND:
switch(wParam) {
//case ID_HELP_RULES: WinHelp(hWnd,"data\\wbc.hlp",HELP_CONTENTS,0L); break;
case ID_HELP_ABOUT:
lpProc = MakeProcInstance(About,hInst);
DialogBox(hInst,"IDD_ABOUT", hWnd, lpProc);
FreeProcInstance(lpProc);
break;
case ID_GAME_NEW:
if(GameIsOn==game)
if(MessageBox(hWnd,"您真的想重新玩一盘吗?",MyName,
MB_ICONQUESTION | MB_OKCANCEL )==IDCANCEL) break;;
lpProc = MakeProcInstance(NewGame,hInst);
DialogBox(hInst,"IDD_STARTGAME", hWnd, lpProc);
FreeProcInstance(
没有合适的资源?快使用搜索试试~ 我知道了~
wbc.rar_othello_黑白棋_黑白棋 搜索
共51个文件
mid:11个
cur:10个
wav:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 90 浏览量
2022-09-20
14:11:22
上传
评论
收藏 178KB RAR 举报
温馨提示
Othello黑白棋,是我大学时在寝室写的。 严重鄙视"我在这里有个家伙的源代码说他的黑白棋无敌",我看了一下,我大学时的这个初作比他强上十倍.
资源推荐
资源详情
资源评论
收起资源包目录
wbc.rar (51个子文件)
wbc
RESOURCE
cap.cur 326B
WHITE.BMP 630B
mer.ico 766B
b1.cur 326B
wbc.ico 766B
fan.cur 326B
WBC.rc 8KB
b2.cur 326B
w1.cur 326B
b3.cur 326B
Sheri.ico 766B
RESOURCE.H 2KB
b0.cur 326B
MASK.BMP 190B
w3.cur 326B
chequer.bmp 42KB
w2.cur 326B
BLACK.BMP 630B
BOMB.BMP 830B
w0.cur 326B
WBC.DEF 138B
WBC.EXE 28KB
WBC.MAK 2KB
data
mid1.mid 10KB
mid4.mid 10KB
gameover.mid 77KB
black.wav 3KB
mid6.mid 87KB
youmove.wav 7KB
white.wav 3KB
title.mid 21KB
redo.wav 13KB
mid3.mid 5KB
candown.wav 2KB
mid5.mid 16KB
mid0.mid 7KB
wbc.GID 8KB
no.wav 7KB
mid7.mid 31KB
click.wav 3KB
mid8.mid 7KB
undo.wav 60KB
mid2.mid 18KB
WBC.BSC 123KB
WBC.RES 9KB
WBC.VCW 90B
wbc.c 43KB
WBC.ncb 41KB
Debug
WBC.OPT 48KB
wbc.h 2KB
www.pudn.com.txt 218B
共 51 条
- 1
资源评论
朱moyimi
- 粉丝: 61
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功