pascal编游戏详细指导
如题,最近学pascal想用它编个游戏,在网上看了些大体介绍的。希望知道关于做图画{一系列库的使用},读入{键盘鼠标},输出{比如怎么输出中文、图像},还有游戏的人工智能...
如题,最近学pascal想用它编个游戏,在网上看了些大体介绍的。希望知道关于做图画{一系列库的使用},读入{键盘鼠标},输出{比如怎么输出中文、图像},还有游戏的人工智能{做成人机大战之类}等一系列游戏必备知识。
希望能够得到长期的联系。
望大神支援!!!!!!!!!! 展开
希望能够得到长期的联系。
望大神支援!!!!!!!!!! 展开
1个回答
2014-06-05
展开全部
Crt单元
过程
Assigncrt(F) F:Text 将文件F放置于显示器
ClrEol 删除当前行上的字符
ClrScr 清屏并将光标移动至(1,1)
CursorBig 将屏幕输出状态改为改写
CursorOff 关闭光标
CursorOn 打开光标并将光标移动至(1,1)
Delay(T) T:Integer 等待T毫秒
GotoXY(X,Y) X,Y:Integer 将光标移动至(X,Y)
InsLine 在光标所在位置插入行
DelLine 删除光标所在当前行
LowVideo 选择低亮度显示字符(颜色代码减8)
NormVideo 选择正常亮度显示字符
HighVideo 选择高亮度显示字符(颜色代码加8)
NoSound 扬声器停止发声
Sound(HZ) HZ:Integer 以Hz频率发声
Readkey 等待键盘输入
TextColor(Color) Color:[White,Green...]
Color:Integer
将正文颜色设为Color
TextBackground(Color) Color:[White,Green...]
Color:Integer
将背景色设置为Color
TextMode(X) X:Integer 选择X为显示模式(有的X值无法正常显示)
Windows(X1,Y1,X2,Y2) X1,Y1,X2,Y2:Integer
在屏幕上建一个列从X1到X2,行从Y1到Y2的窗口
函数
KeyPressed Boolean 判断键盘是否输入
Readkey Char 键盘输入的字符
WhereX Integer 返回光标的列数
WhereY Integer 返回光标的行数
Pascal中的颜色代码:
0 黑
1 深蓝
2 绿
3 天蓝
4 红
5 粉
6 橙
7 白
8 灰
9 蓝紫
10亮绿
11亮蓝
12亮红
13亮粉
14亮黄
15亮白
16闪黑
17闪蓝
18闪绿
19闪天蓝
20闪红
21闪粉
22闪橙
23闪白
24闪灰
25闪蓝紫
26闪亮绿
27闪亮蓝
28闪亮红
29闪亮粉
30闪亮黄
31闪亮白
KeyPressed与Readkey连用效果好:
Repeat
B:=Keypressed;
If B Then
H:=Readkey;
If H=’0′ Then Halt;
Until H=’ ’;
Mouse单元
过程
InitMouse 启用鼠标
DoneMouse 停用鼠标
HideMouse 隐藏鼠标指针
ShowMouse 显示鼠标指针
SetMouseXY(X,Y)X,Y:Integer将鼠标指针移动至(X,Y)
GetMouseEvent(MouseEvent:TMouseEvent)
得到鼠标数据并将其存入MouseEvent中
PutMouseEvent(MouseEvent:TMouseEvent)
用MouseEvent代替当前鼠标数据
函数
DetectMouse Integer 返回值为0时代表没有鼠标,否则返回鼠标按键数
GetMouseButtons Integer 0代表没有按键,1代表左键,2代表右键,4代表中间键(非滚轮)
GetMouseX Integer 返回鼠标所在位置列数
GetMouseY Integer 返回鼠标所在位置行数
PollMouseEvent(MouseEvent:TMouseEvent) Boolean
返回鼠标信息是否被更新(True为未更新)
GetMouseDriver 用途不明
SetMouseDriver 用途不明
常数
MouseLeftButton Integer 代表左键,值为1
MouseRightButton Integer 代表右键,值为2
MouseMiddleButton Integer 代表中间键(非滚轮),值为4
MouseEventBufSize Integer 鼠标缓冲,值为16
MouseActionDown Integer 代表按下鼠标,值为1
MouseActionUp Integer 代表松开鼠标,值为2
MouseActionMove Integer 代表移动鼠标,值为4
errMouseBase Integer 基本鼠标错误,值为1030
errMouseInitError Integer 鼠标使用错误,errMouseBase+0
errMouseNotImplemented Integer
功能无法实现,errMouseBase+1
注:
对TMouseEvent的解释:
记录类型,表示鼠标的综合数据。
域 Buttons:Integer 按键信息,等于GetMouseButtons
X,Y:Integer 指针位置信息,等于GetMouseX/GetMouseY
Action:Integer 移动信息,4代表移动,0代表未移动,1代表鼠标按键按下,2代表鼠标按键抬起
(如144442就是按着鼠标拖动3格)procedure Arc (坐标X,坐标Y;Integer;开始角度,结束角度,半径; Word);
备注:画弧
procedure Bar(坐标x1,坐标y1,坐标x2,坐标y2: Integer);
备注:画一个已填充的正方形
procedure Bar3D(坐标x1,坐标y1,坐标x2,坐标y2:Integer;高:Word;有没有顶:Boolean);
备注:画立方体
procedure Circle(坐标X,坐标Y:Integer;半径:Word);
备注:画圆
procedure ClearDevice;
备注:把指示器移到(0,0),用背景颜色去清屏,准备输出
procedure ClearViewPort;
备注:把填充颜色变为背景色,把指示器移到(0,0)
procedure CloseGraph
备注:关掉图象(garph)模式
procedure DetectGraph(var 驱动器,模式:Integer);
备注:检查硬件和找出用哪个驱动器和模式
procedure DrawPoly(点数: Word; var 坐标:PolyPoints);
备注:画多边形
procedure Ellipse(坐标X,坐标Y:Integer;开始角度,结束角度:Word;半径1,半径2:Word);
备注:画椭圆
procedure FillEllipse(坐标X,坐标Y:Integer;半径1,半径2: Word);
备注:画一个已填充的椭圆
procedure FillPoly(点数: Word; var 坐标:PolyPoints);
备注:画一个已填充的多边形
procedure FloodFill(坐标X,坐标Y:Integer;边界颜色: Word);
备注:填充一个边界的区域
procedure GetArcCoords(var 记录变量: _ArcCoordsType_);
备注:得到上一次画弧时的开始坐标,结束坐标和圆心坐标
procedure GetAspectRatio(var 比例X,比例Y:Word);
备注:得到屏幕高宽的比例
function GetBkColor: Word;
备注:返回当前的背景颜色
function GetColor: Word;
备注:得到当前的画图颜色
function GetDefaultPalette(var 记录变量: PaletteType);
备注:得到默认的颜色记录
function GetDriverName: string;
备注:得到驱动器的名字
procedure GetFillPattern(var 记录变量: FillPatternType);
备注:得到填充的模式
procedure GetFillSettings(var 记录变量: FillSettingsType);
备注:得到填充的设置
function GetGraphMode: Integer;
备注:得到图形的模式
procedure GetImage(坐标x1,坐标y1,坐标x2,坐标y2:Integer;var 位图:pointer);
备注:把一个指定区域里的一小片图象保存在缓冲器里
procedure GetLineSettings(var 记录变量: LineSettingsType);
备注:得到线的设置
function GetMaxColor: Word;
备注:得到最大的颜色
function GetMaxMode: Integer;
备注:得到最大的模式
function GetMaxX: Integer;
备注:得到最大的X坐标
function GetMaxY: Integer;
备注:得到最大的Y坐标
function GetModeName(模式序号: Integer): string;
备注:得到模式名
procedure GetModeRange(图象驱动:Integer; var 最小模式,最大模式:Integer);
备注:得到模式范围
procedure GetPalette(var 记录变量: PaletteType);
备注:得到当前的颜色记录
function GetPaletteSize: Integer;
备注:得到屏幕中颜色记录的尺寸
function GetPixel(坐标X,坐标Y: Integer): Word;
备注:得到(X,Y)的颜色
procedure GetTextSettings(var 记录变量: TextSettingsType);
备注:得到文字设置
procedure GetViewSettings(var ViewPort: ViewPortType);
备注:得到显示设置
function GetX: Integer;
备注:得到当前指示器的X坐标
function GetY: Integer;
备注:得到当前指示器的Y坐标
2006-11-1 20:49 回复
overture_wy
18位粉丝
2楼
procedure GraphDefaults;
备注:把graph的所有设置变为原始状态
function GraphErrorMsg(错误号: Integer): string;
备注:返回指定错误号的信息
function GraphResult: Integer;
备注:返回最后一次画图时的错误号
function ImageSize(坐标x1,坐标y1,坐标x2,坐标y2:坐标Integer):坐标Word;
备注:返回一片区域储存所许的字节数
procedure InitGraph(var 驱动器:Integer;var 模式:Integer;到驱动器的路径:string);
备注:graph初始化
procedure Line(坐标x1,坐标y1,坐标x2,坐标y2:Integer);
备注:画线
procedure LineRel(坐标Dx,坐标Dy:Integer);
备注:画一条到指示器的线,坐标是对于指示器为(0,0)来说的
procedure LineTo(坐标X,坐标Y:Integer);
备注:画一条到指示器的线
procedure MoveRel(坐标Dx,坐标Dy: Integer);
备注:把指示器依到(Dx,Dy),坐标是对于指示器为(0,0)来说的
procedure MoveTo(坐标X,坐标Y: Integer);
备注:把指示器依到(x,y)
procedure OutText(字符串: string);
备注:在指示器位置上输出字符串
procedure OutTextXY(坐标X,坐标Y: Integer;字符串: string);
备注:在(x,y)位置输出字符串
procedure PieSlice(坐标X,坐标Y:Integer;开始角度,结束角度,半径:Word);
备注:画一个已填充的扇形
procedure PutImage(坐标X,坐标Y:Integer;var 位图:pointer;BitBlt:Word);
备注:把一个图象显示到显示器上,BitBlt处可为NormalPut,XORPut或者NotPut
procedure PutPixel(坐标X,坐标Y: Integer;颜色: Word);
备注:在(X,Y)上显示一个1*1的正方形
procedure Rectangle(坐标x1,坐标y1,坐标x2,坐标y2: Integer);
备注:画正方形
procedure RestoreCrtMode;
备注:恢复到刚初始化时的状态
procedure Sector(坐标x,坐标y:Integer;开始角度,结束角度,半径X,半径Y:Word);
备注:画一个已填充的椭圆部分
procedure SetActivePage(Page: Word);
备注:设置当前画图所在的页
procedure SetAllPalette(var Palette);
备注:把所有颜色设置变为特定的
procedure SetBkColor(颜色: Word);
备注:设置背景颜色
procedure SetColor(颜色: Word);
备注:设置颜色
procedure SetFillPattern(记录变量: FillPatternType;颜色:Word);
备注:设置填充颜色模式
procedure SetFillStyle(模式: ord;颜色: Word);
备注:设置填充颜色风格
procedure SetLineStyle(线风格:Word;模式:Word;厚度:Word);
备注:设置线的风格
procedure SetPalette(颜色序号:Word;颜色:Shortint);
备注:设置调色版
procedure SetTextStyle(字体,方向:Word;大小:Word);
备注:设置文字风格
procedure SetVisualPage(Page: Word);
备注:设置当前显示的页
procedure SetWriteMode(写字模式: Integer);
备注:设置写字模式
function TextHeight(字符串: string): Word;
备注:文字的高
function TextWidth(TextString: string): Word;
备注:文字的宽
过程
Assigncrt(F) F:Text 将文件F放置于显示器
ClrEol 删除当前行上的字符
ClrScr 清屏并将光标移动至(1,1)
CursorBig 将屏幕输出状态改为改写
CursorOff 关闭光标
CursorOn 打开光标并将光标移动至(1,1)
Delay(T) T:Integer 等待T毫秒
GotoXY(X,Y) X,Y:Integer 将光标移动至(X,Y)
InsLine 在光标所在位置插入行
DelLine 删除光标所在当前行
LowVideo 选择低亮度显示字符(颜色代码减8)
NormVideo 选择正常亮度显示字符
HighVideo 选择高亮度显示字符(颜色代码加8)
NoSound 扬声器停止发声
Sound(HZ) HZ:Integer 以Hz频率发声
Readkey 等待键盘输入
TextColor(Color) Color:[White,Green...]
Color:Integer
将正文颜色设为Color
TextBackground(Color) Color:[White,Green...]
Color:Integer
将背景色设置为Color
TextMode(X) X:Integer 选择X为显示模式(有的X值无法正常显示)
Windows(X1,Y1,X2,Y2) X1,Y1,X2,Y2:Integer
在屏幕上建一个列从X1到X2,行从Y1到Y2的窗口
函数
KeyPressed Boolean 判断键盘是否输入
Readkey Char 键盘输入的字符
WhereX Integer 返回光标的列数
WhereY Integer 返回光标的行数
Pascal中的颜色代码:
0 黑
1 深蓝
2 绿
3 天蓝
4 红
5 粉
6 橙
7 白
8 灰
9 蓝紫
10亮绿
11亮蓝
12亮红
13亮粉
14亮黄
15亮白
16闪黑
17闪蓝
18闪绿
19闪天蓝
20闪红
21闪粉
22闪橙
23闪白
24闪灰
25闪蓝紫
26闪亮绿
27闪亮蓝
28闪亮红
29闪亮粉
30闪亮黄
31闪亮白
KeyPressed与Readkey连用效果好:
Repeat
B:=Keypressed;
If B Then
H:=Readkey;
If H=’0′ Then Halt;
Until H=’ ’;
Mouse单元
过程
InitMouse 启用鼠标
DoneMouse 停用鼠标
HideMouse 隐藏鼠标指针
ShowMouse 显示鼠标指针
SetMouseXY(X,Y)X,Y:Integer将鼠标指针移动至(X,Y)
GetMouseEvent(MouseEvent:TMouseEvent)
得到鼠标数据并将其存入MouseEvent中
PutMouseEvent(MouseEvent:TMouseEvent)
用MouseEvent代替当前鼠标数据
函数
DetectMouse Integer 返回值为0时代表没有鼠标,否则返回鼠标按键数
GetMouseButtons Integer 0代表没有按键,1代表左键,2代表右键,4代表中间键(非滚轮)
GetMouseX Integer 返回鼠标所在位置列数
GetMouseY Integer 返回鼠标所在位置行数
PollMouseEvent(MouseEvent:TMouseEvent) Boolean
返回鼠标信息是否被更新(True为未更新)
GetMouseDriver 用途不明
SetMouseDriver 用途不明
常数
MouseLeftButton Integer 代表左键,值为1
MouseRightButton Integer 代表右键,值为2
MouseMiddleButton Integer 代表中间键(非滚轮),值为4
MouseEventBufSize Integer 鼠标缓冲,值为16
MouseActionDown Integer 代表按下鼠标,值为1
MouseActionUp Integer 代表松开鼠标,值为2
MouseActionMove Integer 代表移动鼠标,值为4
errMouseBase Integer 基本鼠标错误,值为1030
errMouseInitError Integer 鼠标使用错误,errMouseBase+0
errMouseNotImplemented Integer
功能无法实现,errMouseBase+1
注:
对TMouseEvent的解释:
记录类型,表示鼠标的综合数据。
域 Buttons:Integer 按键信息,等于GetMouseButtons
X,Y:Integer 指针位置信息,等于GetMouseX/GetMouseY
Action:Integer 移动信息,4代表移动,0代表未移动,1代表鼠标按键按下,2代表鼠标按键抬起
(如144442就是按着鼠标拖动3格)procedure Arc (坐标X,坐标Y;Integer;开始角度,结束角度,半径; Word);
备注:画弧
procedure Bar(坐标x1,坐标y1,坐标x2,坐标y2: Integer);
备注:画一个已填充的正方形
procedure Bar3D(坐标x1,坐标y1,坐标x2,坐标y2:Integer;高:Word;有没有顶:Boolean);
备注:画立方体
procedure Circle(坐标X,坐标Y:Integer;半径:Word);
备注:画圆
procedure ClearDevice;
备注:把指示器移到(0,0),用背景颜色去清屏,准备输出
procedure ClearViewPort;
备注:把填充颜色变为背景色,把指示器移到(0,0)
procedure CloseGraph
备注:关掉图象(garph)模式
procedure DetectGraph(var 驱动器,模式:Integer);
备注:检查硬件和找出用哪个驱动器和模式
procedure DrawPoly(点数: Word; var 坐标:PolyPoints);
备注:画多边形
procedure Ellipse(坐标X,坐标Y:Integer;开始角度,结束角度:Word;半径1,半径2:Word);
备注:画椭圆
procedure FillEllipse(坐标X,坐标Y:Integer;半径1,半径2: Word);
备注:画一个已填充的椭圆
procedure FillPoly(点数: Word; var 坐标:PolyPoints);
备注:画一个已填充的多边形
procedure FloodFill(坐标X,坐标Y:Integer;边界颜色: Word);
备注:填充一个边界的区域
procedure GetArcCoords(var 记录变量: _ArcCoordsType_);
备注:得到上一次画弧时的开始坐标,结束坐标和圆心坐标
procedure GetAspectRatio(var 比例X,比例Y:Word);
备注:得到屏幕高宽的比例
function GetBkColor: Word;
备注:返回当前的背景颜色
function GetColor: Word;
备注:得到当前的画图颜色
function GetDefaultPalette(var 记录变量: PaletteType);
备注:得到默认的颜色记录
function GetDriverName: string;
备注:得到驱动器的名字
procedure GetFillPattern(var 记录变量: FillPatternType);
备注:得到填充的模式
procedure GetFillSettings(var 记录变量: FillSettingsType);
备注:得到填充的设置
function GetGraphMode: Integer;
备注:得到图形的模式
procedure GetImage(坐标x1,坐标y1,坐标x2,坐标y2:Integer;var 位图:pointer);
备注:把一个指定区域里的一小片图象保存在缓冲器里
procedure GetLineSettings(var 记录变量: LineSettingsType);
备注:得到线的设置
function GetMaxColor: Word;
备注:得到最大的颜色
function GetMaxMode: Integer;
备注:得到最大的模式
function GetMaxX: Integer;
备注:得到最大的X坐标
function GetMaxY: Integer;
备注:得到最大的Y坐标
function GetModeName(模式序号: Integer): string;
备注:得到模式名
procedure GetModeRange(图象驱动:Integer; var 最小模式,最大模式:Integer);
备注:得到模式范围
procedure GetPalette(var 记录变量: PaletteType);
备注:得到当前的颜色记录
function GetPaletteSize: Integer;
备注:得到屏幕中颜色记录的尺寸
function GetPixel(坐标X,坐标Y: Integer): Word;
备注:得到(X,Y)的颜色
procedure GetTextSettings(var 记录变量: TextSettingsType);
备注:得到文字设置
procedure GetViewSettings(var ViewPort: ViewPortType);
备注:得到显示设置
function GetX: Integer;
备注:得到当前指示器的X坐标
function GetY: Integer;
备注:得到当前指示器的Y坐标
2006-11-1 20:49 回复
overture_wy
18位粉丝
2楼
procedure GraphDefaults;
备注:把graph的所有设置变为原始状态
function GraphErrorMsg(错误号: Integer): string;
备注:返回指定错误号的信息
function GraphResult: Integer;
备注:返回最后一次画图时的错误号
function ImageSize(坐标x1,坐标y1,坐标x2,坐标y2:坐标Integer):坐标Word;
备注:返回一片区域储存所许的字节数
procedure InitGraph(var 驱动器:Integer;var 模式:Integer;到驱动器的路径:string);
备注:graph初始化
procedure Line(坐标x1,坐标y1,坐标x2,坐标y2:Integer);
备注:画线
procedure LineRel(坐标Dx,坐标Dy:Integer);
备注:画一条到指示器的线,坐标是对于指示器为(0,0)来说的
procedure LineTo(坐标X,坐标Y:Integer);
备注:画一条到指示器的线
procedure MoveRel(坐标Dx,坐标Dy: Integer);
备注:把指示器依到(Dx,Dy),坐标是对于指示器为(0,0)来说的
procedure MoveTo(坐标X,坐标Y: Integer);
备注:把指示器依到(x,y)
procedure OutText(字符串: string);
备注:在指示器位置上输出字符串
procedure OutTextXY(坐标X,坐标Y: Integer;字符串: string);
备注:在(x,y)位置输出字符串
procedure PieSlice(坐标X,坐标Y:Integer;开始角度,结束角度,半径:Word);
备注:画一个已填充的扇形
procedure PutImage(坐标X,坐标Y:Integer;var 位图:pointer;BitBlt:Word);
备注:把一个图象显示到显示器上,BitBlt处可为NormalPut,XORPut或者NotPut
procedure PutPixel(坐标X,坐标Y: Integer;颜色: Word);
备注:在(X,Y)上显示一个1*1的正方形
procedure Rectangle(坐标x1,坐标y1,坐标x2,坐标y2: Integer);
备注:画正方形
procedure RestoreCrtMode;
备注:恢复到刚初始化时的状态
procedure Sector(坐标x,坐标y:Integer;开始角度,结束角度,半径X,半径Y:Word);
备注:画一个已填充的椭圆部分
procedure SetActivePage(Page: Word);
备注:设置当前画图所在的页
procedure SetAllPalette(var Palette);
备注:把所有颜色设置变为特定的
procedure SetBkColor(颜色: Word);
备注:设置背景颜色
procedure SetColor(颜色: Word);
备注:设置颜色
procedure SetFillPattern(记录变量: FillPatternType;颜色:Word);
备注:设置填充颜色模式
procedure SetFillStyle(模式: ord;颜色: Word);
备注:设置填充颜色风格
procedure SetLineStyle(线风格:Word;模式:Word;厚度:Word);
备注:设置线的风格
procedure SetPalette(颜色序号:Word;颜色:Shortint);
备注:设置调色版
procedure SetTextStyle(字体,方向:Word;大小:Word);
备注:设置文字风格
procedure SetVisualPage(Page: Word);
备注:设置当前显示的页
procedure SetWriteMode(写字模式: Integer);
备注:设置写字模式
function TextHeight(字符串: string): Word;
备注:文字的高
function TextWidth(TextString: string): Word;
备注:文字的宽
更多追问追答
追问
1、例如贪吃蛇中的界面是怎么做的呢{就是那些不动的方块}
2、怎么做到蛇在动可墙{不动得方块}是不动的呢??
3、怎么做到页面间的切换,就是选择一个按钮后进入下一个新的页面
4、可以做个NPC么
5、怎么存档
谢!
追答
1、不动的方块直接输出。
(2省略,3的回答包含了2)
3、每按键一次就clrscr(清屏)
5、存档:
procedure sps2;(生成文件夹)
begin
assign(f,'aaa.bat');rewrite(f);
writeln(f,'@md "D:\sps"');
close(f);
exec('aaa.bat','');
end;
procedure save;(存档)
begin
assign(f,'D:\sps\cd.txt');rewrite(f);
close(f);
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询