中文版的C语言V1.71 天宫一号纪念版发布
习语言 V1.71 天宫一号纪念版 习语言 V1.71
【概括介绍】
综合了PASCAL和C的优点实现,支持 “开始”“结束”扩起语句块。
【基本介绍】
习语言即中文版的C语言。作为一种新起步的中文编程语言,了解的人可能还很少,但是开发者一直在不断完善。也许很多人都听说过易语言,易语言其实看起来像中文版的VB,但两者在许多方面不同。而习语言,则是中文版的C语言。
习语言由一套完备的编程语法和相配套的工具组成,旨在将计算机及软件编程大众化,普及化,中文化,提高程序的维护性而诞生。习语言还很年轻,不到一岁,可作为学习工具。
作为一种中文编程语言,习语言中所有的关键字和函数都为中文。
习语言有可能成为将来中文系统的开发语言。目前习语言已经完全支持汇编和C语言,并向windows图形处理发展。
历史经验证明,英文写的代码大部分都会遗忘的。而习语言则避免了这一点。真正符合汉语言特色。而且支持全角和半角的标点符号,编程时输入符号类时不用切换为英文输入法。 中文C(习)语言中文编程系统(简称:习语言):是一款主要用于教育和学习的中文编程软件系统。基于现有C语言系统实现并有扩充。
【软件特点】
1、完全兼容现有的C语言系统,在设置好头文件路径的条件下,可以编译现存大部分C代码。(对VC的兼容性最好!)
2、完全支持全中文编程
3、综合了PASCAL和C的优点实现,支持 “开始”“结束”扩起语句块。支持更多注释方法,方便程序组织。 4、支持多字节字直观表示。如 '我', 'abcd'都可以作为字(符).
5、支持中文标点符号,中文标点符号和英文标点符号混合使用等。
6、支持文章式的程序组织,中文文章中嵌入程序,直接编译。
7、支持中文运算符,支持全角,半角混合使用。
8、体积小巧,单一接口文件,使用理解容易。
用途:
1、开发底层软件如操作系统等
2、写控制台程序(俗称DOS程序)
3、写纯图形界面程序(通常的WINDOWS程序 )
4、写控制台和图形界面同时存在的混合程序。
5、编写游戏程序( DirectX 2D 实现)
习语言的下载地址:http://www.
贪吃蛇程序+源码修正版.rar
(65.2 KB)
以下是用习语言改编(C语言源程序)的贪吃蛇代码:
【版本1.0,2011年10月 花心胡萝卜制作】
#包含 “习语言系统.接口”
#包含 “习语言视窗.接口”
#定义 N 200
【#定义 左 0x4b00
#定义 右 0x4d00
#定义 下 0x5000
#定义 上 0x4800
#定义 ESC 0x011b】
类型定义 无类型 (标准调用 *延时函数)(
自然数类型 毫秒数
);
整数类型 计数,标识,定时器标识;
整数类型 得分=0;【得分】
自然数类型 游戏速度=300;【500;【游戏速度自己调整】
画笔类型 食物画笔,蛇画笔;
整数类型 定时器控制,定时器按键;
结构类型 食物结构
{
整数类型 横坐标;【食物的横坐标】
整数类型 纵坐标;【食物的纵坐标】
整数类型 是否出现食物;【判断是否要出现食物的变量】
}食物;【食物的结构体】
结构类型 蛇结构
{
整数类型 横坐标[N];
整数类型 纵坐标[N];
整数类型 蛇节数;【蛇的节数】
整数类型 移动方向;【蛇移动方向】
整数类型 生命;【 蛇的生命,0活着,1死亡】
}蛇;
整数类型 显示器消息主处理( 自然数类型 消息, 双字类型 参数1, 双字类型 参数2 )
{
【====用户消息处理开始==】
//用户已经处理的消息,返回1,系统不再处理此消息,没处理的消息,返回0,让系统处理
分支( 消息 )
{
若等于 视窗消息_键按下:
{
如果((参数1 等于 ‘W’ 或 参数1 等于 ‘w’) 与 蛇.
移动方向 不等于 4)【判断是否往相反的方向移动】{
蛇.移动方向=3;
} 否则 {
如果((参数1 等于 ‘D’ 或 参数1 等于 ‘d’) 与
蛇.移动方向 不等于 2){
蛇.移动方向=1;
} 否则 {
如果((参数1 等于 ‘A’ 或 参数1 等于 ‘a’
) 与 蛇.移动方向 不等于 1) {
蛇.移动方向=2;
} 否则 {
如果((参数1 等于 ‘S’ 或 参数1 等于
‘s’ ) 与 蛇.移动方向 不等于 3) {
蛇.移动方向=4;
} 否则 {
如果(参数1 等于 ‘X’ 或 参数1
等于 ‘x’ ){
图形关闭显示器(1);
}
}
}
}
}
}
跳出;
}
【====用户消息处理结束==】
返回 0;
}
【输出成绩】
无类型 游戏结果()
{
字符串类型 串;
格式化(串,20,“得分:%整”, 得分);
【整数类型】图形输出文字(【整数类型 水平坐标】55,【整数类型 垂直坐标】22,【字符
串类型 字符串】串);
}
无类型 游戏结束()
{
画刷类型 画刷1;
【整数类型】图形销毁定时器(【双字类型 定时器号码】1);
【无类型】 图形清屏(【无类型】);
【整数类型】图形获取画刷(【画刷类型 *画刷指针】&画刷1);
画刷1.颜色 = 红绿蓝(218,228,228);
【整数类型】图形设置画刷(【画刷类型 *画刷指针】&画刷1);
【颜色类型】图形设置背景色(【颜色类型 背景色】红绿蓝(218,228,228));
图形输出文字(260, 230 , “游戏结束!”);
游戏结果();
}
无类型 延时(自然数类型 时长)
{
模块证类型 模块证;
延时函数 Sleep;
模块证 =【模块证类型】获取模块证(【字符串类型 模块名】“kernel32.dll”);
Sleep =【无类型 *】 (延时函数)获取函数地址(【模块证类型 模块证】模块证,【字
符串类型 函数名】“Sleep”);
Sleep(时长);
}
无类型 绘画()
{
颜色类型 前景色;
画刷类型 画刷;
前景色 = 红绿蓝(255,0,0) ;
【无类型】 图形清屏(【无类型】);
【整数类型】图形获取画刷(【画刷类型 *画刷指针】&画刷);
画刷.颜色 = 红绿蓝(218,228,228);
【整数类型】图形设置画刷(【画刷类型 *画刷指针】&画刷);
【颜色类型】图形设置背景色(【颜色类型 背景色】 红绿蓝(218,228,228) )
;
【整数类型】图形获取画笔(【画笔类型 *画笔指针】&蛇画笔);
蛇画笔.颜色 = 前景色;
蛇画笔.风格 = 0;
【整数类型】图形设置画笔(【画笔类型 *画笔指针】&蛇画笔);
步进循环(【初始化语句】计数 = 50;【条件表达式】计数 小于等于 600;【步
进语句】计数 加等 10){
【循环语句】
【整数类型】图形画方框(【整数类型 左坐标】计数,【整数类型 上坐标】40,【整
数类型 右坐标】计数 加 10,【整数类型 下坐标】49);
【整数类型】图形画方框(【整数类型 左坐标】计数,【整数类型 上坐标】451,【
整数类型 右坐标】计数 加 10,【整数类型 下坐标】460);
}
步进循环(【初始化语句】计数 = 40;【条件表达式】计数 小于等于 450;【步
进语句】计数 加等 10){
【循环语句】
【整数类型】图形画方框(【整数类型 左坐标】50,【整数类型 上坐标】计数,【整
数类型 右坐标】59,【整数类型 下坐标】计数 加 10);
【整数类型】图形画方框(【整数类型 左坐标】601,【整数类型 上坐标】计数,【
整数类型 右坐标】610,【整数类型 下坐标】计数 加 10);
}
游戏结果();【输出得分】
}
整数类型 定时器事件处理主函数(双字类型 定时器号)
{
绘画();
{
如果(食物.是否出现食物 等于 1)【需要出现新食物】
{
食物.横坐标=【整数类型】 取随机数(【无参数】) 模除 400
加 60;
食物.纵坐标=【整数类型】 取随机数(【无参数】) 模除 350
加 60;
当(食物.横坐标 模除 10 不等于 0)【食物随机出现后必须让食
物能够在整格内,这样才可以让蛇吃到】
食物.横坐标 加加 ;
当(食物.纵坐标 模除 10 不等于 0)
食物.纵坐标 加加 ;
食物.是否出现食物=0;【画面上有食物了】
}
如果(食物.是否出现食物 等于 0)【画面上有食物了就要显示】
{
【整数类型】图形获取画笔(【画笔类型 *画笔指针】&食物画笔);
食物画笔.颜色 = 红绿蓝(0,255,0) ;
【整数类型】图形设置画笔(【画笔类型 *画笔指针】&食物画笔);
【整数类型】图形画方框(【整数类型 左坐标】食物.横坐标,【整数
类型 上坐标】食物.纵坐标,【整数类型 右坐标】食物.横坐标 加 10,【整数类型 下坐标】食
物.纵坐标-10);
}
步进循环(计数 = 蛇.蛇节数-1;计数 大于 0;计数 减减 )【蛇
的每个环节往前移动,也就是贪吃蛇的关键算法】
{
蛇.横坐标[计数]=蛇.横坐标[计数-1];
蛇.纵坐标[计数]=蛇.纵坐标[计数-1];
}
【1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头】
分支(蛇.移动方向)
{
若等于 1: 蛇.横坐标[0] 加等 10;跳出;
若等于 2: 蛇.横坐标[0] 减等 10;跳出;
若等于 3: 蛇.纵坐标[0] 减等 10;跳出;
若等于 4: 蛇.纵坐标[0] 加等 10;跳出;
}
步进循环(计数=3;计数 小于 蛇.蛇节数;计数 加加 )
【从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来】
{
如果(蛇.横坐标[计数] 等于 蛇.横坐标[0] 与 蛇.纵
坐标[计数] 等于 蛇.纵坐标[0])
{
游戏结束();【显示失败】
蛇.生命=1;
跳出;
}
}
如果(蛇.横坐标[0] 小于 55 或 蛇.横坐标[0] 大于 595
或 蛇.纵坐标[0] 小于 55 或 蛇.纵坐标[0] 大于 455)【蛇是否撞到
墙壁】
{
游戏结束();【本次游戏结束】
蛇.生命=1; 【蛇死】
}
如果(蛇.生命 等于 1)【以上两种判断以后,如果蛇死就跳出内循环,重
新开始】
{
【整数类型】图形销毁定时器(【双字类型 定时器号码】定时器标识);
游戏结束();
}
如果(蛇.横坐标[0] 等于 食物.横坐标 与 蛇.纵坐标[0]
等于 食物.纵坐标)【吃到食物以后】
{
【把画面上的食物东西去掉】
【整数类型】图形获取画笔(【画笔类型 *画笔指针】&食物画笔);
食物画笔.颜色 = 红绿蓝(0,0,0);
【整数类型】图形设置画笔(【画笔类型 *画笔指针】&食物画笔);
【整数类型】图形画方框(【整数类型 左坐标】食物.横坐标,【整数类型
上坐标】食物.纵坐标,【整数类型 右坐标】食物.横坐标 加 10,【整数类型 下坐标】食物.纵
坐标-10);
蛇.横坐标[蛇.蛇节数] = -20;
蛇.纵坐标[蛇.蛇节数] = -20;
【新的一节先放在看不见的位置,下次循环就取前一节的位置】
蛇.蛇节数 加加 ;【蛇的身体长一节】
食物.是否出现食物=1;【画面上需要出现新的食物】
得分 加等 10;
游戏结果();【输出新得分】
}
【画出蛇】
【整数类型】图形获取画笔(【画笔类型 *画笔指针】&蛇画笔);
蛇画笔.颜色 = 红绿蓝(0,0,255);
【整数类型】图形设置画笔(【画笔类型 *画笔指针】&蛇画笔);
步进循环(计数=0;计数 小于 蛇.蛇节数;计数 加加 )
【整数类型】图形画方框(【整数类型 左坐标】蛇.横坐标[计数],【整
数类型 上坐标】蛇.纵坐标[计数],【整数类型 右坐标】蛇.横坐标[计数] 加 10,【整数类
型 下坐标】蛇.纵坐标[计数]-10);
【延时(游戏速度);】
【用黑色去除蛇的的最后一节】
// 【整数类型】图形获取画笔(【画笔类型 *画笔指针】&蛇画笔);
// 蛇画笔.颜色 = 红绿蓝(0,0,0);
// 【整数类型】图形设置画笔(【画笔类型 *画笔指针】&蛇画笔);
// 【整数类型】图形画方框(【整数类型 左坐标】蛇.横坐标[蛇.蛇节数-1],【
整数类型 上坐标】蛇.纵坐标[蛇.蛇节数-1],【整数类型 右坐标】蛇.横坐标[蛇.蛇节数-1]
加 10,【整数类型 下坐标】蛇.纵坐标[蛇.蛇节数-1]-10);
}
如果(蛇.生命 等于 1)【如果蛇死就跳出循环】{
【整数类型】图形销毁定时器(【双字类型 定时器号码】定时器标识);
游戏结束();
}
返回 0;
}
无类型 初始化()
{
整数类型 标志位=0;
画笔类型 画笔;
【整数类型】图形初始化显示器(【字符类型* 名称】“习语言简易版贪吃蛇 by 花心胡萝
卜 ”,【整数类型 宽】660,【整数类型 高】500,【字符类型* 图标】空指针,【自然数类型
属性】0,【显示器消息处理函数 消息回调】显示器消息主处理);
【整数类型】图形打开显示器(【整数类型 模式】0);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】30,【字符串类型
字符串】“习语言 简易贪吃蛇 花心胡萝卜编写。”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】60,【字符串类型
字符串】“控制方法:上 W,下 S,左 A,右 D。”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】90,【字符串类型
字符串】“按任意键开始玩。”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】120,【字符串类
型 字符串】“由于刚开始玩习语言,很多不知道的东西!”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】150,【字符串类
型 字符串】“所以导致程序不美观,”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】180,【字符串类
型 字符串】“希望大家见谅!”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】210,【字符串类
型 字符串】“欢迎大家与我讨论习语言!”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】240,【字符串类
型 字符串】“QQ:84613538”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】320,【字符串类
型 字符串】“习语言官方论坛:http://www.”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】350,【字符串类
型 字符串】“习语言QQ群:61440235”);
【整数类型】图形输出文字(【整数类型 水平坐标】50,【整数类型 垂直坐标】380,【字符串类
型 字符串】“欢迎使用习语言!”);
获取按键();
绘画();
【无类型】 图形初始化定时器(【定时器事件处理函数 定时器回调】定时器事件处理主函
数);
定时器控制 = 【双字类型】图形创建定时器(【双字类型 定时器号码】1,【双字类型 时
间间隔】游戏速度);
食物.是否出现食物=1;【1表示需要出现新食物,0表示已经存在食物】
蛇.生命=0;【活着】
蛇.移动方向=1;【方向往右】
蛇.横坐标[0]=100;蛇.纵坐标[0]=100;【蛇头】
蛇.横坐标[1]=110;蛇.纵坐标[1]=100;
蛇.蛇节数=2;【节数】
图形等待显示器关闭();
}
整数类型 主函数(整数类型 参数个数, 字符串类型 参数[])
{
【======用户代码开始======】
初始化();
图形关闭显示器(1);
返回 0;
}
【版本1.0,2011年10月 花心胡萝卜制作】
[ 本帖最后由 a2120258 于 2011-10-9 12:26 编辑 ]