|
高中2年级
 
- 帖子
- 873
- 金币
- 20 枚
- 原创分
- 2 点
- 资源分
- 2 点
- 铜币
- 0 枚
- 注册时间
- 2005-10-4
- 最后登录
- 2008-10-7
|
1楼
大中
小发表于 2006-7-13 22:18 只看该作者
写出来的程序会Fatal Exception希望DX指点!
#include
#include "TicTacToe.h"
#define MainForm 1000
#define MainGadget 1000
struct boxNumber
{
Int16 ordinal;
Int16 x;
Int16 y;
};
static Boolean appHandleEvent (EventPtr pEvent);
static void mainFormInit (FormPtr pForm);
static Boolean mainFormEventHandler (EventPtr pEvent);
static Boolean doMainMenu (FormPtr pForm, UInt16 command);
static void startApp() {return;}
static void stopApp() {return;}
static void* getobjectPtr(FormPtr pForm, Int16 resourceNo);
static void TicTacToeDraw(FormPtr pForm,UInt16 gadgetID);
static void TicTacToeTap(FormPtr pForm,UInt16 gadgetID,EventPtr pEvent);
static struct boxNumber getBoxWithPen(RectangleType bounds,Int16 boxWidth,Int16 x,Int16 y);
static void getBoundsOfBox(Int16 boxWidth,struct boxNumber boxN , RectangleType *bounds , RectangleType *box);
static Boolean
mainFormEventHandler(EventPtr pEvent)
{
UInt8* dataP;
Boolean handled = false;
FormPtr pForm = FrmGetActiveForm();
UInt16 gadgetIndex = FrmGetobjectIndex(pForm,MainGadget);
RectangleType bounds;
switch (pEvent->eType)
{
case frmOpenEvent:
FrmDrawForm(pForm);
mainFormInit(pForm);
TicTacToeDraw(pForm,MainGadget);
handled = true;
break;
case frmCloseEvent:
dataP = FrmGetGadgetData(pForm, FrmGetobjectIndex(pForm, MainGadget));
if (dataP!=0)
{MemPtrFree(dataP); }
break;
case penDownEvent:
FrmGetobjectBounds(pForm,gadgetIndex,&bounds);
if( RctPtInRectangle(pEvent->screenX,pEvent->screenY,&bounds) )
{
TicTacToeTap(pForm,MainGadget,pEvent);
handled = true;
}
break;
default:
break;
}
return handled;
}
static void mainFormInit (FormPtr pForm)
{
void *dataP;
void* temp;
dataP = MemPtrNew(9*sizeof(UInt8)) ;
temp = dataP;
if(dataP)
{
MemSet(dataP,9*sizeof(UInt8),1);
FrmSetGadgetData(pForm,FrmGetobjectIndex(pForm,MainGadget),dataP);
}
}
void* getobjectPtr (FormPtr pForm, Int16 resourceNo)
{
UInt16 objIndex=FrmGetobjectIndex(pForm,resourceNo);
return FrmGetobjectPtr(pForm,objIndex);
}
static void TicTacToeDraw(FormPtr pForm,UInt16 gadgetID)
{
RectangleType bounds;
UInt16 gadgetIndex = FrmGetobjectIndex(pForm,gadgetID);
UInt8* dataP = FrmGetGadgetData(pForm,gadgetIndex);
UInt8 i,Xadd,Yadd,temp;
// WinDrawChars("TicTacToeDraw Init...",StrLen("TicTacToeDraw Init..."),20,20);
if(dataP)
{
FrmGetobjectBounds(pForm,gadgetIndex,&bounds);
WinEraseRectangle(&bounds,0);
WinDrawRectangleFrame(rectangleFrame,&bounds);
WinDrawLine(bounds.topLeft.x,bounds.topLeft.y+30,
bounds.topLeft.x+91,bounds.topLeft.y+30);
WinDrawLine(bounds.topLeft.x,bounds.topLeft.y+61,
bounds.topLeft.x+91,bounds.topLeft.y+61);
WinDrawLine(bounds.topLeft.x+30,bounds.topLeft.y,
bounds.topLeft.x+30,bounds.topLeft.y+91);
WinDrawLine(bounds.topLeft.x+61,bounds.topLeft.y,
bounds.topLeft.x+61,bounds.topLeft.y+91);
// WinDrawChars("DrawFrame OK",StrLen("DrawFrame OK"),20,20);
Xadd = 0 ;
Yadd = 0 ;
for(i=0;i<9;i++)
{
temp =*(dataP+i*sizeof(UInt8));
switch(temp)
{
case 0:
WinDrawChars("?",1,bounds.topLeft.x+12+Xadd*31,bounds.topLeft.y+10+Yadd*31);
break;
case 1:
WinDrawChars("X",1,bounds.topLeft.x+12+Xadd*31,bounds.topLeft.y+10+Yadd*31);
break;
case 2:
WinDrawChars("O",1,bounds.topLeft.x+12+Xadd*31,bounds.topLeft.y+10+Yadd*31); break;
break;
default:
break;
}
if(++Xadd > 2)
{
Xadd = 0;
Yadd++;
}
}
}
WinDrawChars("TTTDraw OK",StrLen("TTTDraw OK"),20,20);
}
static void TicTacToeTap(FormPtr pForm,UInt16 gadgetID,EventPtr pEvent)
{
UInt16 gadgetIndex = FrmGetobjectIndex(pForm,gadgetID);
UInt8* dataP=FrmGetGadgetData(pForm,gadgetIndex);
UInt8* dataPB;
if(dataP!=0)
{
RectangleType bou
Treo650+TT5+Wireless Keyboard+Sanisk+Kingston+AData
|