From 00360e5fd81b498aed5591a2afb103711260e13c Mon Sep 17 00:00:00 2001 From: yixy-only Date: Mon, 5 Feb 2024 00:29:27 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20tutorial=20=E4=B8=AD=E7=9A=84=E6=BA=90?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=BD=AC=E4=B8=BA=20UTF-8=20=E7=BC=96?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- man/tutorial/t01.cpp | 8 +++---- man/tutorial/t02.cpp | 10 ++++---- man/tutorial/t03.cpp | 10 ++++---- man/tutorial/t04.cpp | 6 ++--- man/tutorial/t05.cpp | 20 ++++++++-------- man/tutorial/t06.cpp | 18 +++++++------- man/tutorial/t07.cpp | 22 ++++++++--------- man/tutorial/t08.cpp | 14 +++++------ man/tutorial/t09.cpp | 26 ++++++++++---------- man/tutorial/t10.cpp | 12 +++++----- man/tutorial/t11.cpp | 14 +++++------ man/tutorial/t12.cpp | 16 ++++++------- man/tutorial/t13.cpp | 18 +++++++------- man/tutorial/t14.cpp | 14 +++++------ man/tutorial/t15.cpp | 12 +++++----- man/tutorial/t16.cpp | 10 ++++---- man/tutorial/t17.cpp | 6 ++--- man/tutorial/t18.cpp | 12 +++++----- man/tutorial/t21.cpp | 40 +++++++++++++++---------------- man/tutorial/t22.cpp | 26 ++++++++++---------- man/tutorial/t23.cpp | 30 ++++++++++++------------ man/tutorial/t24.cpp | 38 +++++++++++++++--------------- man/tutorial/t25.cpp | 48 ++++++++++++++++++------------------- man/tutorial/t26.cpp | 46 ++++++++++++++++++------------------ man/tutorial/t27.cpp | 54 +++++++++++++++++++++--------------------- man/tutorial/t30.cpp | 56 ++++++++++++++++++++++---------------------- man/tutorial/t50.cpp | 4 ++-- man/tutorial/t51.cpp | 10 ++++---- 28 files changed, 300 insertions(+), 300 deletions(-) diff --git a/man/tutorial/t01.cpp b/man/tutorial/t01.cpp index c396dd4d..018d166c 100644 --- a/man/tutorial/t01.cpp +++ b/man/tutorial/t01.cpp @@ -1,15 +1,15 @@ -//第一个图形窗口程序 +//绗竴涓浘褰㈢獥鍙g▼搴 #include int main() { - //初始化为640*480大小 + //鍒濆鍖栦负640*480澶у皬 initgraph(640, 480); - //等待用户按键 + //绛夊緟鐢ㄦ埛鎸夐敭 getch(); - //关闭图形界面 + //鍏抽棴鍥惧舰鐣岄潰 closegraph(); return 0; } diff --git a/man/tutorial/t02.cpp b/man/tutorial/t02.cpp index dd37fa69..4b8a416b 100644 --- a/man/tutorial/t02.cpp +++ b/man/tutorial/t02.cpp @@ -1,16 +1,16 @@ -//第一个画图程序 +//绗竴涓敾鍥剧▼搴 #include int main() { initgraph(640, 480); - //设置画图颜色,GREEN是颜色常数,详细可以查graphics.h对这个宏的定义的值 + //璁剧疆鐢诲浘棰滆壊锛孏REEN鏄鑹插父鏁帮紝璇︾粏鍙互鏌raphics.h瀵硅繖涓畯鐨勫畾涔夌殑鍊 setcolor(GREEN); - //画一直线,从(100,100)到(500,200) - //特别注意的是端点,(100,100)这个点会被画上颜色,但(500,200)不会画上颜色 - //以下所有的矩形(或者说两点)描述方式,总是前一个点取得到,但后一个点取不到 + //鐢讳竴鐩寸嚎锛屼粠(100,100)鍒(500,200) + //鐗瑰埆娉ㄦ剰鐨勬槸绔偣锛(100,100)杩欎釜鐐逛細琚敾涓婇鑹诧紝浣(500,200)涓嶄細鐢讳笂棰滆壊 + //浠ヤ笅鎵鏈夌殑鐭╁舰锛堟垨鑰呰涓ょ偣锛夋弿杩版柟寮忥紝鎬绘槸鍓嶄竴涓偣鍙栧緱鍒帮紝浣嗗悗涓涓偣鍙栦笉鍒 line(100, 100, 500, 200); getch(); diff --git a/man/tutorial/t03.cpp b/man/tutorial/t03.cpp index ffe5baf4..05ce1cc6 100644 --- a/man/tutorial/t03.cpp +++ b/man/tutorial/t03.cpp @@ -1,16 +1,16 @@ -//色彩的计算 +//鑹插僵鐨勮绠 #include int main() { initgraph(640, 480); - //设置画图颜色,使用EGERGB宏,三个参数值的范围均为0 - 255 (0xFF) - //分别表示红色亮度,绿色亮度,蓝色亮度 - //EGERGB(0xFF, 0x0, 0x0) (纯红色) 等价于0xFF0000 + //璁剧疆鐢诲浘棰滆壊锛屼娇鐢‥GERGB瀹忥紝涓変釜鍙傛暟鍊肩殑鑼冨洿鍧囦负0 - 255 (0xFF) + //鍒嗗埆琛ㄧず绾㈣壊浜害锛岀豢鑹蹭寒搴︼紝钃濊壊浜害 + //EGERGB(0xFF, 0x0, 0x0) (绾孩鑹) 绛変环浜0xFF0000 setcolor(EGERGB(0xFF, 0x0, 0x0)); - //画一圆,圆心在(200,200),半径100 + //鐢讳竴鍦嗭紝鍦嗗績鍦(200,200)锛屽崐寰100 circle(200, 200, 100); getch(); diff --git a/man/tutorial/t04.cpp b/man/tutorial/t04.cpp index bb7ac4e0..f4fad53e 100644 --- a/man/tutorial/t04.cpp +++ b/man/tutorial/t04.cpp @@ -1,14 +1,14 @@ -//颜色填充 +//棰滆壊濉厖 #include int main() { initgraph(640, 480); - //设置填充颜色,一般为图形内部颜色 + //璁剧疆濉厖棰滆壊锛屼竴鑸负鍥惧舰鍐呴儴棰滆壊 setfillcolor(EGERGB(0xFF, 0x0, 0x80)); - //画一实心矩形,范围为:x坐标从50-300,y坐标从100-200 + //鐢讳竴瀹炲績鐭╁舰锛岃寖鍥翠负锛歺鍧愭爣浠50-300锛寉鍧愭爣浠100-200 bar(50, 100, 300, 200); getch(); diff --git a/man/tutorial/t05.cpp b/man/tutorial/t05.cpp index f5bd7694..6cdf3a5f 100644 --- a/man/tutorial/t05.cpp +++ b/man/tutorial/t05.cpp @@ -1,29 +1,29 @@ -//图形边界和填充 +//鍥惧舰杈圭晫鍜屽~鍏 #include int main() { initgraph(640, 480); - //设置绘图颜色,一般用于边界 + //璁剧疆缁樺浘棰滆壊锛屼竴鑸敤浜庤竟鐣 setcolor(EGERGB(0xFF, 0xFF, 0x0)); - //设置填充颜色,一般为图形内部颜色 + //璁剧疆濉厖棰滆壊锛屼竴鑸负鍥惧舰鍐呴儴棰滆壊 setfillcolor(EGERGB(0xFF, 0x0, 0x80)); - //画一带填充的椭圆 + //鐢讳竴甯﹀~鍏呯殑妞渾 fillellipse(200, 200, 150, 100); - //画一个空心圆 + //鐢讳竴涓┖蹇冨渾 circle(500, 300, 100); - //再次设置填充颜色,用于决定下一函数填充的颜色 + //鍐嶆璁剧疆濉厖棰滆壊锛岀敤浜庡喅瀹氫笅涓鍑芥暟濉厖鐨勯鑹 setfillcolor(EGERGB(0x80, 0x0, 0xFF)); - //手工填充 - //x,y是开始填充的坐标,第三个参数是填充的边界颜色,或者说以这个颜色作为边界 - //如果这个边界不封闭,那么会导致整个屏幕都是这个颜色 - //注意, 这里仅仅是教你如何使用floodfill, 正常情况下要绘制实心正圆, 请仍然使用fillellipse + //鎵嬪伐濉厖 + //x,y鏄紑濮嬪~鍏呯殑鍧愭爣锛岀涓変釜鍙傛暟鏄~鍏呯殑杈圭晫棰滆壊锛屾垨鑰呰浠ヨ繖涓鑹蹭綔涓鸿竟鐣 + //濡傛灉杩欎釜杈圭晫涓嶅皝闂紝閭d箞浼氬鑷存暣涓睆骞曢兘鏄繖涓鑹 + //娉ㄦ剰锛 杩欓噷浠呬粎鏄暀浣犲浣曚娇鐢╢loodfill, 姝e父鎯呭喌涓嬭缁樺埗瀹炲績姝e渾, 璇蜂粛鐒朵娇鐢╢illellipse floodfill(500, 300, EGERGB(0xFF, 0xFF, 0x0)); getch(); diff --git a/man/tutorial/t06.cpp b/man/tutorial/t06.cpp index cf964213..f765394b 100644 --- a/man/tutorial/t06.cpp +++ b/man/tutorial/t06.cpp @@ -1,23 +1,23 @@ -//屏幕背景色 +//灞忓箷鑳屾櫙鑹 #include int main() { initgraph(640, 480); - //第一次设置背景色 - setbkcolor(EGERGB(0x0, 0x40, 0x0)); //浅绿色 + //绗竴娆¤缃儗鏅壊 + setbkcolor(EGERGB(0x0, 0x40, 0x0)); //娴呯豢鑹 setcolor(EGERGB(0xFF, 0xFF, 0x0)); setfillcolor(EGERGB(0xFF, 0x0, 0x80)); - //画带填充的扇形 + //鐢诲甫濉厖鐨勬墖褰 sector(200, 200, 45, 135, 150, 100); getch(); - //按下一任意键后,再次改变背景色 - setbkcolor(EGERGB(0x0, 0x0, 0x40)); //浅蓝色 + //鎸変笅涓浠绘剰閿悗锛屽啀娆℃敼鍙樿儗鏅壊 + setbkcolor(EGERGB(0x0, 0x0, 0x40)); //娴呰摑鑹 getch(); @@ -25,7 +25,7 @@ int main() return 0; } -//补充:另有setbkcolor_f函数,它设置的是cleardevice函数所使用的颜色, -//所以要等到cleardevice调用时,它的效果才会展现。 -//当然,setbkcolor也会设置,但同时也会立即把屏幕上的原背景色改变 +//琛ュ厖锛氬彟鏈塻etbkcolor_f鍑芥暟锛屽畠璁剧疆鐨勬槸cleardevice鍑芥暟鎵浣跨敤鐨勯鑹诧紝 +//鎵浠ヨ绛夊埌cleardevice璋冪敤鏃讹紝瀹冪殑鏁堟灉鎵嶄細灞曠幇銆 +//褰撶劧锛宻etbkcolor涔熶細璁剧疆锛屼絾鍚屾椂涔熶細绔嬪嵆鎶婂睆骞曚笂鐨勫師鑳屾櫙鑹叉敼鍙 diff --git a/man/tutorial/t07.cpp b/man/tutorial/t07.cpp index 24924d0d..54528699 100644 --- a/man/tutorial/t07.cpp +++ b/man/tutorial/t07.cpp @@ -1,32 +1,32 @@ -//文字绘制与文字相关设置 +//鏂囧瓧缁樺埗涓庢枃瀛楃浉鍏宠缃 #include int main() { initgraph(640, 480); - //先画一个矩形,以便于看出背景色的问题 + //鍏堢敾涓涓煩褰紝浠ヤ究浜庣湅鍑鸿儗鏅壊鐨勯棶棰 setfillcolor(EGERGB(0x0, 0x80, 0x80)); bar(50, 50, 500, 200); - //文字颜色 + //鏂囧瓧棰滆壊 setcolor(EGERGB(0x0, 0xFF, 0x0)); - //文字背景色(注意setbkcolor函数也会同时改变文字背景色) + //鏂囧瓧鑳屾櫙鑹诧紙娉ㄦ剰setbkcolor鍑芥暟涔熶細鍚屾椂鏀瑰彉鏂囧瓧鑳屾櫙鑹诧級 setfontbkcolor(EGERGB(0x80, 0x00, 0x80)); - //设置字体,第一个参数是字体的高度(像素),第二个参数是字体的宽度,第二个参数如果为0,就使用默认比例值 - //如果高度为12,即相当于小五号字,或者9磅字,实际的换算就自己完成吧 - setfont(12, 0, "宋体"); + //璁剧疆瀛椾綋锛岀涓涓弬鏁版槸瀛椾綋鐨勯珮搴︼紙鍍忕礌锛夛紝绗簩涓弬鏁版槸瀛椾綋鐨勫搴︼紝绗簩涓弬鏁板鏋滀负0锛屽氨浣跨敤榛樿姣斾緥鍊 + //濡傛灉楂樺害涓12锛屽嵆鐩稿綋浜庡皬浜斿彿瀛楋紝鎴栬9纾呭瓧锛屽疄闄呯殑鎹㈢畻灏辫嚜宸卞畬鎴愬惂 + setfont(12, 0, "瀹嬩綋"); - //写文字,注意:outtextxy不支持\t \n这类格式化用的特殊字符,这类字符会被忽略 - //要使用特殊格式化字符请用outtextrect + //鍐欐枃瀛楋紝娉ㄦ剰锛歰uttextxy涓嶆敮鎸乗t \n杩欑被鏍煎紡鍖栫敤鐨勭壒娈婂瓧绗︼紝杩欑被瀛楃浼氳蹇界暐 + //瑕佷娇鐢ㄧ壒娈婃牸寮忓寲瀛楃璇风敤outtextrect outtextxy(100, 100, "Hello EGE Graphics"); outtextrect(100, 120, 200, 100, "\tHello EGE Graphics\nHere is the next line."); - //设置文字背景填充方式为透明,默认为OPAQUE不透明 + //璁剧疆鏂囧瓧鑳屾櫙濉厖鏂瑰紡涓洪忔槑锛岄粯璁や负OPAQUE涓嶉忔槑 setbkmode(TRANSPARENT); - outtextxy(100, 150, "Hello EGE Graphics, 中文也是支持的"); + outtextxy(100, 150, "Hello EGE Graphics, 涓枃涔熸槸鏀寔鐨"); getch(); diff --git a/man/tutorial/t08.cpp b/man/tutorial/t08.cpp index 82209273..2c3ce7ff 100644 --- a/man/tutorial/t08.cpp +++ b/man/tutorial/t08.cpp @@ -1,25 +1,25 @@ -//图形视口裁剪 +//鍥惧舰瑙嗗彛瑁佸壀 #include int main() { initgraph(640, 480); - //设置视口矩形区域为(200,100) - (330, 130) - //最后一个参数为1表示出了这个区域的图形会被裁剪 - //后面所绘画的图形的原点坐标(0,0),会映射到(200,100) + //璁剧疆瑙嗗彛鐭╁舰鍖哄煙涓(200,100) - (330, 130) + //鏈鍚庝竴涓弬鏁颁负1琛ㄧず鍑轰簡杩欎釜鍖哄煙鐨勫浘褰細琚鍓 + //鍚庨潰鎵缁樼敾鐨勫浘褰㈢殑鍘熺偣鍧愭爣(0,0)锛屼細鏄犲皠鍒(200,100) setviewport(200, 100, 330, 130, 1); - //画一些文字,注意文字会因区域被裁剪的效果 + //鐢讳竴浜涙枃瀛楋紝娉ㄦ剰鏂囧瓧浼氬洜鍖哄煙琚鍓殑鏁堟灉 setcolor(EGERGB(0x0, 0xFF, 0x0)); setfontbkcolor(EGERGB(0x80, 0x00, 0x80)); - setfont(18, 0, "宋体"); + setfont(18, 0, "瀹嬩綋"); outtextxy(0, 0, "Hello EGE Graphics"); setbkmode(TRANSPARENT); outtextxy(0, 20, "Hello EGE Graphics"); - //还原视口 + //杩樺師瑙嗗彛 setviewport(0, 0, getwidth(), getheight(), 1); outtextxy(0, 0, "Hello EGE Graphics"); diff --git a/man/tutorial/t09.cpp b/man/tutorial/t09.cpp index 0bc8b6cf..060d3daf 100644 --- a/man/tutorial/t09.cpp +++ b/man/tutorial/t09.cpp @@ -1,42 +1,42 @@ -//使用IMAGE——抓图,绘画到IMAGE,IMAGE到屏幕 +//浣跨敤IMAGE鈥斺旀姄鍥撅紝缁樼敾鍒癐MAGE锛孖MAGE鍒板睆骞 #include -//IMAGE对象相当于一个绘图板,而同时也可以作为图片画到其它IMAGE上 -//它是一个非常灵活的对象,复杂的绘图都要借助IMAGE,以便更好地保存和输出图像 +//IMAGE瀵硅薄鐩稿綋浜庝竴涓粯鍥炬澘锛岃屽悓鏃朵篃鍙互浣滀负鍥剧墖鐢诲埌鍏跺畠IMAGE涓 +//瀹冩槸涓涓潪甯哥伒娲荤殑瀵硅薄锛屽鏉傜殑缁樺浘閮借鍊熷姪IMAGE锛屼互渚挎洿濂藉湴淇濆瓨鍜岃緭鍑哄浘鍍 int main() { - //声明一个img图片对象 + //澹版槑涓涓猧mg鍥剧墖瀵硅薄 PIMAGE img; initgraph(640, 480); - //先随便画一些东西 + //鍏堥殢渚跨敾涓浜涗笢瑗 setcolor(EGERGB(0xFF, 0xFF, 0x0)); setfillcolor(EGERGB(0xFF, 0x0, 0x80)); fillellipse(50, 50, 50, 50); - //用newimage在initgraph后创建这个对象。但记得要在不使用的时候delimage + //鐢╪ewimage鍦╥nitgraph鍚庡垱寤鸿繖涓璞°備絾璁板緱瑕佸湪涓嶄娇鐢ㄧ殑鏃跺檇elimage img = newimage(); - //从屏幕上截取(0, 0) - (80, 60)这部分作为img,这个img大小为80*60 - //img的尺寸会重设,大小由第三第四个参数决定 - //注意,(0,0)这点会被包含在img里,但(80, 60)不包含 + //浠庡睆骞曚笂鎴彇(0, 0) - (80, 60)杩欓儴鍒嗕綔涓篿mg锛岃繖涓猧mg澶у皬涓80*60 + //img鐨勫昂瀵镐細閲嶈锛屽ぇ灏忕敱绗笁绗洓涓弬鏁板喅瀹 + //娉ㄦ剰锛(0,0)杩欑偣浼氳鍖呭惈鍦╥mg閲岋紝浣(80, 60)涓嶅寘鍚 getimage(img, 0, 0, 80, 60); - //对img设置填充色为绿色 + //瀵筰mg璁剧疆濉厖鑹蹭负缁胯壊 setfillcolor(EGERGB(0x0, 0x70, 0x0), img); - //对img画实心矩形 + //瀵筰mg鐢诲疄蹇冪煩褰 bar(40, 20, 70, 50, img); int x, y; - //把img平铺在屏幕上,使用一个二重循环 + //鎶奿mg骞抽摵鍦ㄥ睆骞曚笂锛屼娇鐢ㄤ竴涓簩閲嶅惊鐜 for (y = 0; y < 8; ++y) { for (x = 0; x < 8; ++x) { - //把img整个,画在指定的坐标上,左上角对齐这个坐标 + //鎶奿mg鏁翠釜锛岀敾鍦ㄦ寚瀹氱殑鍧愭爣涓婏紝宸︿笂瑙掑榻愯繖涓潗鏍 putimage(x * 80, y * 60, img); } } diff --git a/man/tutorial/t10.cpp b/man/tutorial/t10.cpp index dca0539a..ce0edb0d 100644 --- a/man/tutorial/t10.cpp +++ b/man/tutorial/t10.cpp @@ -1,4 +1,4 @@ -//使用IMAGE——拉伸 +//浣跨敤IMAGE鈥斺旀媺浼 #include int main() @@ -7,7 +7,7 @@ int main() initgraph(640, 480); - //先随便画一些东西 + //鍏堥殢渚跨敾涓浜涗笢瑗 setcolor(EGERGB(0xFF, 0xFF, 0x0)); setfillcolor(EGERGB(0xFF, 0x0, 0x80)); fillellipse(50, 50, 50, 50); @@ -16,14 +16,14 @@ int main() getimage(img, 0, 0, 160, 120); int x, y; - //把img平铺在屏幕上,使用一个二重循环 + //鎶奿mg骞抽摵鍦ㄥ睆骞曚笂锛屼娇鐢ㄤ竴涓簩閲嶅惊鐜 for (y = 0; y < 8; ++y) { for (x = 0; x < 8; ++x) { - //把img整个,拉伸画在指定的矩形里 - //需要指定目标矩形,源矩形 - //源矩形参数不能忽略,否则会和其它非拉伸功能的贴图函数混淆 + //鎶奿mg鏁翠釜锛屾媺浼哥敾鍦ㄦ寚瀹氱殑鐭╁舰閲 + //闇瑕佹寚瀹氱洰鏍囩煩褰紝婧愮煩褰 + //婧愮煩褰㈠弬鏁颁笉鑳藉拷鐣ワ紝鍚﹀垯浼氬拰鍏跺畠闈炴媺浼稿姛鑳界殑璐村浘鍑芥暟娣锋穯 putimage(x * 80, y * 60, 80, 60, img, 0, 0, 160, 120); } } diff --git a/man/tutorial/t11.cpp b/man/tutorial/t11.cpp index a20edd9c..58a242dd 100644 --- a/man/tutorial/t11.cpp +++ b/man/tutorial/t11.cpp @@ -1,4 +1,4 @@ -//使用IMAGE——透明,半透明 +//浣跨敤IMAGE鈥斺旈忔槑锛屽崐閫忔槑 #include int main() @@ -7,7 +7,7 @@ int main() initgraph(640, 480); - //先随便画一些东西 + //鍏堥殢渚跨敾涓浜涗笢瑗 setcolor(EGERGB(0xFF, 0xFF, 0x0)); setfillcolor(EGERGB(0xFF, 0x0, 0x80)); fillellipse(50, 50, 50, 50); @@ -15,15 +15,15 @@ int main() img = newimage(); getimage(img, 0, 0, 160, 120); - //先画一个非黑色背景,以便于比较 + //鍏堢敾涓涓潪榛戣壊鑳屾櫙锛屼互渚夸簬姣旇緝 setbkcolor(EGERGB(0x80, 0x80, 0x80)); cleardevice(); - //四种贴图比较 + //鍥涚璐村浘姣旇緝 putimage(0, 0, img); - putimage_alphablend(NULL, img, 160, 0, 0x80); //半透明度为0x80 - putimage_transparent(NULL, img, 0, 80, BLACK); //透明贴图,关键色为BLACK,源图为这个颜色的地方会被忽略 - putimage_alphatransparent(NULL, img, 160, 80, BLACK, 0xA0); //同时使用透明和半透明 + putimage_alphablend(NULL, img, 160, 0, 0x80); //鍗婇忔槑搴︿负0x80 + putimage_transparent(NULL, img, 0, 80, BLACK); //閫忔槑璐村浘锛屽叧閿壊涓築LACK锛屾簮鍥句负杩欎釜棰滆壊鐨勫湴鏂逛細琚拷鐣 + putimage_alphatransparent(NULL, img, 160, 80, BLACK, 0xA0); //鍚屾椂浣跨敤閫忔槑鍜屽崐閫忔槑 getch(); diff --git a/man/tutorial/t12.cpp b/man/tutorial/t12.cpp index 9e76b9e2..6768ae50 100644 --- a/man/tutorial/t12.cpp +++ b/man/tutorial/t12.cpp @@ -1,26 +1,26 @@ -//用户交互——键盘1 +//鐢ㄦ埛浜や簰鈥斺旈敭鐩1 #include -//这个例子需要这个头文件 +//杩欎釜渚嬪瓙闇瑕佽繖涓ご鏂囦欢 #include int main() { initgraph(640, 480); - setfont(18, 0, "宋体"); + setfont(18, 0, "瀹嬩綋"); outtextxy(0, 0, "please press any key"); int k = 0; - for ( ; k != key_esc; ) // key_esc是ege定义的按键常数 + for ( ; k != key_esc; ) // key_esc鏄痚ge瀹氫箟鐨勬寜閿父鏁 { char str[32]; - //等待用户按键,并把得到的按键给k - //如果你不想等待,可以在调用getch之前,使用kbhit检测是否有按键按下 - //如 if ( kbhit() ) k = getch(); + //绛夊緟鐢ㄦ埛鎸夐敭锛屽苟鎶婂緱鍒扮殑鎸夐敭缁檏 + //濡傛灉浣犱笉鎯崇瓑寰咃紝鍙互鍦ㄨ皟鐢╣etch涔嬪墠锛屼娇鐢╧bhit妫娴嬫槸鍚︽湁鎸夐敭鎸変笅 + //濡 if ( kbhit() ) k = getch(); k = getch(); - //格式化输出为字符串,用于后面输出 + //鏍煎紡鍖栬緭鍑轰负瀛楃涓诧紝鐢ㄤ簬鍚庨潰杈撳嚭 sprintf(str, "%c %3d", k, k); cleardevice(); diff --git a/man/tutorial/t13.cpp b/man/tutorial/t13.cpp index a8f37075..9e41414c 100644 --- a/man/tutorial/t13.cpp +++ b/man/tutorial/t13.cpp @@ -1,27 +1,27 @@ -//用户交互——键盘2 +//鐢ㄦ埛浜や簰鈥斺旈敭鐩2 #include -//这个例子需要这个头文件 +//杩欎釜渚嬪瓙闇瑕佽繖涓ご鏂囦欢 #include int main() { initgraph(640, 480); - setfont(18, 0, "宋体"); + setfont(18, 0, "瀹嬩綋"); outtextxy(0, 0, "press any key"); key_msg k = {0}; - for ( ; k.key != key_esc; ) // key_esc是ege定义的按键常数 + for ( ; k.key != key_esc; ) // key_esc鏄痚ge瀹氫箟鐨勬寜閿父鏁 { char str[32]; - //等待用户按键,并把得到的按键给k - //如果你不想等待,可以在调用getkey之前,使用kbmsg检测是否有按键按下 - //如 if ( kbmsg() ) k = getkey(); + //绛夊緟鐢ㄦ埛鎸夐敭锛屽苟鎶婂緱鍒扮殑鎸夐敭缁檏 + //濡傛灉浣犱笉鎯崇瓑寰咃紝鍙互鍦ㄨ皟鐢╣etkey涔嬪墠锛屼娇鐢╧bmsg妫娴嬫槸鍚︽湁鎸夐敭鎸変笅 + //濡 if ( kbmsg() ) k = getkey(); k = getkey(); - //格式化输出为字符串,用于后面输出 - //msg参见key_msg_e, flag参见key_flag_e + //鏍煎紡鍖栬緭鍑轰负瀛楃涓诧紝鐢ㄤ簬鍚庨潰杈撳嚭 + //msg鍙傝key_msg_e, flag鍙傝key_flag_e sprintf(str, "key= %c %3d %2x msg=%d flag=%d", k.key, k.key, k.key, k.msg, k.flags); cleardevice(); diff --git a/man/tutorial/t14.cpp b/man/tutorial/t14.cpp index 0f1b781a..f4ff634c 100644 --- a/man/tutorial/t14.cpp +++ b/man/tutorial/t14.cpp @@ -1,4 +1,4 @@ -//用户交互——鼠标1 +//鐢ㄦ埛浜や簰鈥斺旈紶鏍1 #include #include @@ -7,22 +7,22 @@ int main() { initgraph(640, 480); - setfont(18, 0, "宋体"); + setfont(18, 0, "瀹嬩綋"); int k = 0; - // 这个循环,is_run判断窗口是否还在,delay_fps是延时 - // 后面讲动画的时候会详细讲解,现不要在此纠结 + // 杩欎釜寰幆锛宨s_run鍒ゆ柇绐楀彛鏄惁杩樺湪锛宒elay_fps鏄欢鏃 + // 鍚庨潰璁插姩鐢荤殑鏃跺欎細璇︾粏璁茶В锛岀幇涓嶈鍦ㄦ绾犵粨 for ( ; is_run(); delay_fps(60)) { char str[32]; int x, y; - //获取鼠标坐标,此函数不等待。若鼠标移出了窗口,那么坐标值不会更新 - //特殊情况是,你按着鼠标键不放,拖出窗口,这样坐标值会依然更新 + //鑾峰彇榧犳爣鍧愭爣锛屾鍑芥暟涓嶇瓑寰呫傝嫢榧犳爣绉诲嚭浜嗙獥鍙o紝閭d箞鍧愭爣鍊间笉浼氭洿鏂 + //鐗规畩鎯呭喌鏄紝浣犳寜鐫榧犳爣閿笉鏀撅紝鎷栧嚭绐楀彛锛岃繖鏍峰潗鏍囧间細渚濈劧鏇存柊 mousepos(&x, &y); - //格式化输出为字符串,用于后面输出 + //鏍煎紡鍖栬緭鍑轰负瀛楃涓诧紝鐢ㄤ簬鍚庨潰杈撳嚭 sprintf(str, "%4d %4d", x, y); outtextxy(0, 0, str); diff --git a/man/tutorial/t15.cpp b/man/tutorial/t15.cpp index 362b4aa0..cc64547a 100644 --- a/man/tutorial/t15.cpp +++ b/man/tutorial/t15.cpp @@ -1,4 +1,4 @@ -//用户交互——鼠标2 +//鐢ㄦ埛浜や簰鈥斺旈紶鏍2 #include #include @@ -7,20 +7,20 @@ int main() { initgraph(640, 480); - setfont(18, 0, "宋体"); + setfont(18, 0, "瀹嬩綋"); mouse_msg msg = {0}; for ( ; is_run(); delay_fps(60)) { - //获取鼠标消息,这个函数会等待,等待到有消息为止 - //类似地,有和kbhit功能相近的函数MouseHit,用于检测有没有鼠标消息 + //鑾峰彇榧犳爣娑堟伅锛岃繖涓嚱鏁颁細绛夊緟锛岀瓑寰呭埌鏈夋秷鎭负姝 + //绫讳技鍦帮紝鏈夊拰kbhit鍔熻兘鐩歌繎鐨勫嚱鏁癕ouseHit锛岀敤浜庢娴嬫湁娌℃湁榧犳爣娑堟伅 while (mousemsg()) { msg = getmouse(); } - //格式化输出为字符串,用于后面输出 - //msg和flag常数请参考文档或者mouse_msg_e, mouse_flag_e的声明 + //鏍煎紡鍖栬緭鍑轰负瀛楃涓诧紝鐢ㄤ簬鍚庨潰杈撳嚭 + //msg鍜宖lag甯告暟璇峰弬鑰冩枃妗f垨鑰卪ouse_msg_e, mouse_flag_e鐨勫0鏄 cleardevice(); xyprintf(0, 0, "x = %10d y = %10d", diff --git a/man/tutorial/t16.cpp b/man/tutorial/t16.cpp index 09272b92..2dd1d425 100644 --- a/man/tutorial/t16.cpp +++ b/man/tutorial/t16.cpp @@ -1,4 +1,4 @@ -//用户交互——字符串数据输入* (非重点) +//鐢ㄦ埛浜や簰鈥斺斿瓧绗︿覆鏁版嵁杈撳叆* 锛堥潪閲嶇偣锛 #include #include @@ -7,12 +7,12 @@ int main() { initgraph(640, 480); - //用来接收输入 + //鐢ㄦ潵鎺ユ敹杈撳叆 char str[100]; - //调用对话框函数 - inputbox_getline("请输入", "你爱输入什么就输入什么(回车确认)", str, 100); + //璋冪敤瀵硅瘽妗嗗嚱鏁 + inputbox_getline("璇疯緭鍏", "浣犵埍杈撳叆浠涔堝氨杈撳叆浠涔堬紙鍥炶溅纭锛", str, 100); - //显示输入的内容 + //鏄剧ず杈撳叆鐨勫唴瀹 outtextxy(0, 0, str); getch(); diff --git a/man/tutorial/t17.cpp b/man/tutorial/t17.cpp index 073b7b3f..66df1a36 100644 --- a/man/tutorial/t17.cpp +++ b/man/tutorial/t17.cpp @@ -1,12 +1,12 @@ -//高级:更多的文字对齐方式设置 +//楂樼骇锛氭洿澶氱殑鏂囧瓧瀵归綈鏂瑰紡璁剧疆 #include int main() { initgraph(640, 480); - setfont(18, 0, "宋体"); - //settextjustify(LEFT_TEXT, TOP_TEXT); //默认值 + setfont(18, 0, "瀹嬩綋"); + //settextjustify(LEFT_TEXT, TOP_TEXT); //榛樿鍊 outtextxy(300, 0, "Hello Graphics"); settextjustify(RIGHT_TEXT, TOP_TEXT); diff --git a/man/tutorial/t18.cpp b/man/tutorial/t18.cpp index 32f97dd8..40cc372b 100644 --- a/man/tutorial/t18.cpp +++ b/man/tutorial/t18.cpp @@ -1,23 +1,23 @@ -//高级:更多的颜色表示办法(HSV/HSL) +//楂樼骇锛氭洿澶氱殑棰滆壊琛ㄧず鍔炴硶(HSV/HSL) #include int main() { initgraph(640, 480); - //初始化随机数种子 + //鍒濆鍖栭殢鏈烘暟绉嶅瓙 randomize(); for (; ;) { - //使用随机色彩,纯度为1.0,亮度为0.5 - //第一个参数范围从0 - 360,表示一个角度,这个颜色所在的HSL双头圆锥的方位 - //0是红色,120是绿色,240是蓝色,详见pdf文档内的HSL颜色空间的说明 + //浣跨敤闅忔満鑹插僵锛岀函搴︿负1.0锛屼寒搴︿负0.5 + //绗竴涓弬鏁拌寖鍥翠粠0 - 360锛岃〃绀轰竴涓搴︼紝杩欎釜棰滆壊鎵鍦ㄧ殑HSL鍙屽ご鍦嗛敟鐨勬柟浣 + //0鏄孩鑹诧紝120鏄豢鑹诧紝240鏄摑鑹诧紝璇﹁pdf鏂囨。鍐呯殑HSL棰滆壊绌洪棿鐨勮鏄 setfillcolor(hsl2rgb(float(randomf() * 360), 1.0f, 0.5f)); bar(100,100, 300, 200); - //按一下按键变化一次颜色,ESC退出 + //鎸変竴涓嬫寜閿彉鍖栦竴娆¢鑹诧紝ESC閫鍑 if (getch() == 27) break; } diff --git a/man/tutorial/t21.cpp b/man/tutorial/t21.cpp index 28e23289..37ae5ecf 100644 --- a/man/tutorial/t21.cpp +++ b/man/tutorial/t21.cpp @@ -1,42 +1,42 @@ -//基础动画一:规范框架 +//鍩虹鍔ㄧ敾涓锛氳鑼冩鏋 #include void mainloop() { - // is_run 检测程序是否收到关闭消息,收到的话会返回false,即应该退出程序 - // delay_fps 控制帧率,60表示“平均延时”为1000/60毫秒 - // 为什么使用60?因为60是显示器的默认刷新率,99.9%的显示器都是这个设置 + // is_run 妫娴嬬▼搴忔槸鍚︽敹鍒板叧闂秷鎭紝鏀跺埌鐨勮瘽浼氳繑鍥瀎alse锛屽嵆搴旇閫鍑虹▼搴 + // delay_fps 鎺у埗甯х巼锛60琛ㄧず鈥滃钩鍧囧欢鏃垛濅负1000/60姣 + // 涓轰粈涔堜娇鐢60锛熷洜涓60鏄樉绀哄櫒鐨勯粯璁ゅ埛鏂扮巼锛99.9%鐨勬樉绀哄櫒閮芥槸杩欎釜璁剧疆 for ( ; is_run(); delay_fps(60) ) { - // 清屏 + // 娓呭睆 cleardevice(); - - // todo: 逻辑更新 + + // todo: 閫昏緫鏇存柊 // - // todo: 图形更新 + // todo: 鍥惧舰鏇存柊 } } int main(void) { - // 各种初始化 - // setinitmode设置初始化模式: - // INIT_DEFAULT ege默认配置 - // INIT_NOFORCEEXIT 点了右上角X的时候不强制退出程序,由程序本身检测和控制结束 - // INIT_RENDERMANUAL 与以下的setrendermode(RENDER_MANUAL)等效 + // 鍚勭鍒濆鍖 + // setinitmode璁剧疆鍒濆鍖栨ā寮忥細 + // INIT_DEFAULT ege榛樿閰嶇疆 + // INIT_NOFORCEEXIT 鐐逛簡鍙充笂瑙扻鐨勬椂鍊欎笉寮哄埗閫鍑虹▼搴忥紝鐢辩▼搴忔湰韬娴嬪拰鎺у埗缁撴潫 + // INIT_RENDERMANUAL 涓庝互涓嬬殑setrendermode(RENDER_MANUAL)绛夋晥 setinitmode(INIT_DEFAULT|INIT_NOFORCEEXIT); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 绘图更新模式设置为手动,仅调用delay_fps/delay_ms等函数时才刷新,避免闪烁 - // 区别是在RENDER_AUTO模式下,任何绘图操作进行时都可能刷新,甚至刚cleardevice就显示 - // 导致屏幕上有时仅显示一个背景而没有其它内容导致闪烁 + // 缁樺浘鏇存柊妯″紡璁剧疆涓烘墜鍔紝浠呰皟鐢╠elay_fps/delay_ms绛夊嚱鏁版椂鎵嶅埛鏂帮紝閬垮厤闂儊 + // 鍖哄埆鏄湪RENDER_AUTO妯″紡涓嬶紝浠讳綍缁樺浘鎿嶄綔杩涜鏃堕兘鍙兘鍒锋柊锛岀敋鑷冲垰cleardevice灏辨樉绀 + // 瀵艰嚧灞忓箷涓婃湁鏃朵粎鏄剧ず涓涓儗鏅屾病鏈夊叾瀹冨唴瀹瑰鑷撮棯鐑 setrendermode(RENDER_MANUAL); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t22.cpp b/man/tutorial/t22.cpp index 07601d54..92f60c86 100644 --- a/man/tutorial/t22.cpp +++ b/man/tutorial/t22.cpp @@ -1,9 +1,9 @@ -//基础动画二:简单平移动画 +//鍩虹鍔ㄧ敾浜岋細绠鍗曞钩绉诲姩鐢 #include void mainloop() { - // 动画控制变量,控制横坐标,初始值为0 + // 鍔ㄧ敾鎺у埗鍙橀噺锛屾帶鍒舵í鍧愭爣锛屽垵濮嬪间负0 int x = 0; setcolor(EGERGB(0, 0xFF, 0)); @@ -11,30 +11,30 @@ void mainloop() for ( ; is_run(); delay_fps(60) ) { - // todo: 逻辑更新 - //计算新坐标,右移一个像素,如果等于440则重新移回x=0,达到动画循环 + // todo: 閫昏緫鏇存柊 + //璁$畻鏂板潗鏍囷紝鍙崇Щ涓涓儚绱狅紝濡傛灉绛変簬440鍒欓噸鏂扮Щ鍥瀤=0锛岃揪鍒板姩鐢诲惊鐜 x = ( x + 1 ) % 440; - // todo: 图形更新 - //清屏,重新在新的位置绘图图像 + // todo: 鍥惧舰鏇存柊 + //娓呭睆锛岄噸鏂板湪鏂扮殑浣嶇疆缁樺浘鍥惧儚 cleardevice(); - //以x为圆的左边界绘画,为什么是左边界?因为圆心坐标是 (x + 半径) 了 + //浠涓哄渾鐨勫乏杈圭晫缁樼敾锛屼负浠涔堟槸宸﹁竟鐣岋紵鍥犱负鍦嗗績鍧愭爣鏄 (x + 鍗婂緞) 浜 fillellipse(x + 100, 200, 100, 100); } } int main(void) { - //INIT_ANIMATION相当于INIT_NOFORCEEXIT|INIT_DEFAULT|INIT_RENDERMANUAL - //下面就不需要再多一步setrendermode + //INIT_ANIMATION鐩稿綋浜嶪NIT_NOFORCEEXIT|INIT_DEFAULT|INIT_RENDERMANUAL + //涓嬮潰灏变笉闇瑕佸啀澶氫竴姝etrendermode setinitmode(INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t23.cpp b/man/tutorial/t23.cpp index 70890547..b0eedb3f 100644 --- a/man/tutorial/t23.cpp +++ b/man/tutorial/t23.cpp @@ -1,4 +1,4 @@ -//基础动画三,更丰富的变化与帧率 +//鍩虹鍔ㄧ敾涓夛紝鏇翠赴瀵岀殑鍙樺寲涓庡抚鐜 #include @@ -6,28 +6,28 @@ void mainloop() { - //x,y记录当前位置,dx,dy记录速度向量,r记录圆半径 + //x,y璁板綍褰撳墠浣嶇疆锛宒x,dy璁板綍閫熷害鍚戦噺锛宺璁板綍鍦嗗崐寰 int x = 0, y = 0, dx = 1, dy = 1, r = 100; for ( ; is_run(); delay_fps(60) ) { - // todo: 逻辑更新 - // 当前位置 + 速度 + // todo: 閫昏緫鏇存柊 + // 褰撳墠浣嶇疆 + 閫熷害 x += dx; y += dy; - if (x < r) dx = 1; //碰左 - if (y < r) dy = 1; //碰上 - if (x >= ege::getwidth() - r) dx = -1; //碰右 - if (y >= ege::getheight() - r) dy = -1; //碰下 + if (x < r) dx = 1; //纰板乏 + if (y < r) dy = 1; //纰颁笂 + if (x >= ege::getwidth() - r) dx = -1; //纰板彸 + if (y >= ege::getheight() - r) dy = -1; //纰颁笅 - // todo: 图形更新 + // todo: 鍥惧舰鏇存柊 cleardevice(); setcolor(GREEN); setfillcolor(BLUE); fillellipse(x, y, r, r); - {// 画帧率文字 + {// 鐢诲抚鐜囨枃瀛 char str[20]; - sprintf(str, "fps %.02f", getfps()); //调用getfps取得当前帧率 + sprintf(str, "fps %.02f", getfps()); //璋冪敤getfps鍙栧緱褰撳墠甯х巼 setcolor(WHITE); outtextxy(0, 0, str); } @@ -37,13 +37,13 @@ void mainloop() int main(void) { setinitmode(INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t24.cpp b/man/tutorial/t24.cpp index 82ec0c68..0ddfbe24 100644 --- a/man/tutorial/t24.cpp +++ b/man/tutorial/t24.cpp @@ -1,62 +1,62 @@ -//基础动画四,半透明淡入淡出 +//鍩虹鍔ㄧ敾鍥涳紝鍗婇忔槑娣″叆娣″嚭 #include void mainloop() { - // x,y记录当前位置,dx,dy记录速度的方向,r记录圆半径 + // x,y璁板綍褰撳墠浣嶇疆锛宒x,dy璁板綍閫熷害鐨勬柟鍚戯紝r璁板綍鍦嗗崐寰 int x = 0, y = 0, dx = 1, dy = 1, r = 100; - // alpha记录当前alpha值,da为alpha变化增量 + // alpha璁板綍褰撳墠alpha鍊硷紝da涓篴lpha鍙樺寲澧為噺 int alpha = 0, da = 1; - // 需要借助img实现透明半透明 + // 闇瑕佸熷姪img瀹炵幇閫忔槑鍗婇忔槑 PIMAGE img; - // img 创建为 w=r*2, h=r*2大小 + // img 鍒涘缓涓 w=r*2, h=r*2澶у皬 img = newimage(r * 2, r * 2); setcolor(0x00FF00, img); setfillcolor(0xFF0000, img); - // 画在img上 + // 鐢诲湪img涓 fillellipse(r, r, r, r, img); setbkcolor(DARKGRAY); for ( ; is_run(); delay_fps(60) ) { - // todo: 逻辑更新 - // 当前位置 + 速度 + // todo: 閫昏緫鏇存柊 + // 褰撳墠浣嶇疆 + 閫熷害 x += dx; y += dy; - if (x < 0) dx = 1; //碰左 - if (y < 0) dy = 1; //碰上 - if (x >= ege::getwidth() - r * 2) dx = -1; //碰右 - if (y >= ege::getheight() - r * 2) dy = -1; //碰下 + if (x < 0) dx = 1; //纰板乏 + if (y < 0) dy = 1; //纰颁笂 + if (x >= ege::getwidth() - r * 2) dx = -1; //纰板彸 + if (y >= ege::getheight() - r * 2) dy = -1; //纰颁笅 - // 改变alpha值,参数范围为 0 ~ 0xFF(255) + // 鏀瑰彉alpha鍊硷紝鍙傛暟鑼冨洿涓 0 ~ 0xFF(255) alpha += da; if (alpha <= 0) da = 1; if (alpha >= 0xFF) da = -1; - // todo: 图形更新 + // todo: 鍥惧舰鏇存柊 cleardevice(); putimage_alphatransparent(NULL, img, x, y, BLACK, (unsigned char)alpha); } - // 释放img + // 閲婃斁img delimage(img); } int main(void) { setinitmode(INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t25.cpp b/man/tutorial/t25.cpp index 8777ed9a..97b28dec 100644 --- a/man/tutorial/t25.cpp +++ b/man/tutorial/t25.cpp @@ -1,7 +1,7 @@ -//基础动画五,对象封装,使代码更有条理 +//鍩虹鍔ㄧ敾浜旓紝瀵硅薄灏佽锛屼娇浠g爜鏇存湁鏉$悊 #include -//定义一个AniObj,即前一例里面的圆,相关属性写在这个结构体里 +//瀹氫箟涓涓狝niObj锛屽嵆鍓嶄竴渚嬮噷闈㈢殑鍦嗭紝鐩稿叧灞炴у啓鍦ㄨ繖涓粨鏋勪綋閲 struct AniObj { int x, y, r; @@ -10,7 +10,7 @@ struct AniObj PIMAGE img; }; -//初始化,设置坐标,速度方向,透明度,创建IMAGE等 +//鍒濆鍖栵紝璁剧疆鍧愭爣锛岄熷害鏂瑰悜锛岄忔槑搴︼紝鍒涘缓IMAGE绛 void initobj(AniObj* obj) { obj->x = 0; @@ -21,7 +21,7 @@ void initobj(AniObj* obj) obj->alpha = 0; obj->da = 1; - // 初始化img + // 鍒濆鍖杋mg obj->img = newimage(obj->r * 2, obj->r * 2); setcolor(0x00FF00, obj->img); @@ -30,30 +30,30 @@ void initobj(AniObj* obj) fillellipse(obj->r, obj->r, obj->r, obj->r, obj->img); } -//更新位置等相关属性 +//鏇存柊浣嶇疆绛夌浉鍏冲睘鎬 void updateobj(AniObj* obj) { - // 当前位置 + 速度 + // 褰撳墠浣嶇疆 + 閫熷害 obj->x += obj->dx; obj->y += obj->dy; - if (obj->x < 0) obj->dx = 1; //碰左 - if (obj->y < 0) obj->dy = 1; //碰上 - if (obj->x >= ege::getwidth() - obj->r * 2) obj->dx = -1; //碰右 - if (obj->y >= ege::getheight() - obj->r * 2) obj->dy = -1; //碰下 + if (obj->x < 0) obj->dx = 1; //纰板乏 + if (obj->y < 0) obj->dy = 1; //纰颁笂 + if (obj->x >= ege::getwidth() - obj->r * 2) obj->dx = -1; //纰板彸 + if (obj->y >= ege::getheight() - obj->r * 2) obj->dy = -1; //纰颁笅 - // 改变alpha值 + // 鏀瑰彉alpha鍊 obj->alpha += obj->da; if (obj->alpha <= 0) obj->da = 1; if (obj->alpha >= 0xFF) obj->da = -1; } -//根据属性值绘画 +//鏍规嵁灞炴у肩粯鐢 void drawobj(AniObj* obj) { putimage_alphatransparent(NULL, obj->img, obj->x, obj->y, BLACK, (unsigned char)obj->alpha); } -//释放这个对象时调用 +//閲婃斁杩欎釜瀵硅薄鏃惰皟鐢 void releaseobj(AniObj* obj) { delimage(obj->img); @@ -61,32 +61,32 @@ void releaseobj(AniObj* obj) void mainloop() { - AniObj obj; //声明AniObj对象 - initobj(&obj); //初始化 + AniObj obj; //澹版槑AniObj瀵硅薄 + initobj(&obj); //鍒濆鍖 for ( ; is_run(); delay_fps(60) ) { - // todo: 逻辑更新 - updateobj(&obj); //更新位置 + // todo: 閫昏緫鏇存柊 + updateobj(&obj); //鏇存柊浣嶇疆 - // todo: 图形更新 + // todo: 鍥惧舰鏇存柊 cleardevice(); - drawobj(&obj); //绘画 + drawobj(&obj); //缁樼敾 } - releaseobj(&obj); //释放 + releaseobj(&obj); //閲婃斁 } int main(void) { setinitmode(INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t26.cpp b/man/tutorial/t26.cpp index 4c95d105..f255bfcc 100644 --- a/man/tutorial/t26.cpp +++ b/man/tutorial/t26.cpp @@ -1,7 +1,7 @@ -//基础动画六,利用对象封装,显示多个对象 +//鍩虹鍔ㄧ敾鍏紝鍒╃敤瀵硅薄灏佽锛屾樉绀哄涓璞 #include -//定义一个AniObj,即前一例里面的圆,相关属性写在这个结构体里 +//瀹氫箟涓涓狝niObj锛屽嵆鍓嶄竴渚嬮噷闈㈢殑鍦嗭紝鐩稿叧灞炴у啓鍦ㄨ繖涓粨鏋勪綋閲 struct AniObj { int x, y; @@ -11,14 +11,14 @@ struct AniObj PIMAGE img; }; -//初始化,设置坐标,速度方向,透明度,创建IMAGE等 +//鍒濆鍖栵紝璁剧疆鍧愭爣锛岄熷害鏂瑰悜锛岄忔槑搴︼紝鍒涘缓IMAGE绛 void initobj(AniObj* obj) { - // random(n) 返回一个 0 到 n 之间的随机整数(unsigned) + // random(n) 杩斿洖涓涓 0 鍒 n 涔嬮棿鐨勯殢鏈烘暣鏁(unsigned) obj->x = (int)random(getwidth()); obj->y = (int)random(getheight()); obj->r = random(20) + 20; - obj->dx = (int)random(2) * 2 - 1; // 生成-1或1 + obj->dx = (int)random(2) * 2 - 1; // 鐢熸垚-1鎴1 obj->dy = (int)random(2) * 2 - 1; obj->alpha = random(250) + 2; obj->da = (int)random(2) * 2 - 1; @@ -31,30 +31,30 @@ void initobj(AniObj* obj) fillellipse(obj->r, obj->r, obj->r, obj->r, obj->img); } -//更新位置等相关属性 +//鏇存柊浣嶇疆绛夌浉鍏冲睘鎬 void updateobj(AniObj* obj) { - // 当前位置 + 速度 + // 褰撳墠浣嶇疆 + 閫熷害 obj->x += obj->dx; obj->y += obj->dy; - if (obj->x < 0) obj->dx = 1; //碰左 - if (obj->y < 0) obj->dy = 1; //碰上 - if (obj->x >= ege::getwidth() - obj->r * 2) obj->dx = -1; //碰右 - if (obj->y >= ege::getheight() - obj->r * 2) obj->dy = -1; //碰下 + if (obj->x < 0) obj->dx = 1; //纰板乏 + if (obj->y < 0) obj->dy = 1; //纰颁笂 + if (obj->x >= ege::getwidth() - obj->r * 2) obj->dx = -1; //纰板彸 + if (obj->y >= ege::getheight() - obj->r * 2) obj->dy = -1; //纰颁笅 - // 改变alpha值 + // 鏀瑰彉alpha鍊 obj->alpha += obj->da; if (obj->alpha <= 0) obj->da = 1; if (obj->alpha >= 0xFF) obj->da = -1; } -//根据属性值绘画 +//鏍规嵁灞炴у肩粯鐢 void drawobj(AniObj* obj) { putimage_alphatransparent(NULL, obj->img, obj->x, obj->y, BLACK, (unsigned char)obj->alpha); } -//释放这个对象时调用 +//閲婃斁杩欎釜瀵硅薄鏃惰皟鐢 void releaseobj(AniObj* obj) { delimage(obj->img); @@ -63,43 +63,43 @@ void releaseobj(AniObj* obj) void mainloop() { const int MAXOBJ = 30; - AniObj obj[MAXOBJ]; //定义对象数组 + AniObj obj[MAXOBJ]; //瀹氫箟瀵硅薄鏁扮粍 int n; for (n = 0; n < MAXOBJ; ++n) { - initobj(&obj[n]); //初始化 + initobj(&obj[n]); //鍒濆鍖 } for ( ; is_run(); delay_fps(60) ) { for (n = 0; n < MAXOBJ; ++n) { - updateobj(&obj[n]); //更新位置 + updateobj(&obj[n]); //鏇存柊浣嶇疆 } cleardevice(); for (n = 0; n < MAXOBJ; ++n) { - drawobj(&obj[n]); //绘画 + drawobj(&obj[n]); //缁樼敾 } } for (n = 0; n < MAXOBJ; ++n) { - releaseobj(&obj[n]); //释放 + releaseobj(&obj[n]); //閲婃斁 } } int main(void) { setinitmode(INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t27.cpp b/man/tutorial/t27.cpp index 556ad1d9..86c9004b 100644 --- a/man/tutorial/t27.cpp +++ b/man/tutorial/t27.cpp @@ -1,7 +1,7 @@ -//基础动画七,使用非整数参数,随机色彩,使你的动画更自然 +//鍩虹鍔ㄧ敾涓冿紝浣跨敤闈炴暣鏁板弬鏁帮紝闅忔満鑹插僵锛屼娇浣犵殑鍔ㄧ敾鏇磋嚜鐒 #include -//定义一个AniObj,即前一例里面的圆,相关属性写在这个结构体里 +//瀹氫箟涓涓狝niObj锛屽嵆鍓嶄竴渚嬮噷闈㈢殑鍦嗭紝鐩稿叧灞炴у啓鍦ㄨ繖涓粨鏋勪綋閲 struct AniObj { float x, y; @@ -11,30 +11,30 @@ struct AniObj PIMAGE img; }; -//自定义函数,用来返回一个0 - m之间的浮点数 +//鑷畾涔夊嚱鏁帮紝鐢ㄦ潵杩斿洖涓涓0 - m涔嬮棿鐨勬诞鐐规暟 float myrand(float m) { - // randomf() 返回一个 0 到 1 之间的随机浮点数 + // randomf() 杩斿洖涓涓 0 鍒 1 涔嬮棿鐨勯殢鏈烘诞鐐规暟 return (float)(randomf() * m); } -//定义速度基准值,base_speed是最低速度,base_speed+randspeed是最高速度 +//瀹氫箟閫熷害鍩哄噯鍊硷紝base_speed鏄渶浣庨熷害锛宐ase_speed+randspeed鏄渶楂橀熷害 const float base_speed = 0.5f; const float randspeed = 1.5f; -//初始化,设置坐标,速度方向,透明度,创建IMAGE等 +//鍒濆鍖栵紝璁剧疆鍧愭爣锛岄熷害鏂瑰悜锛岄忔槑搴︼紝鍒涘缓IMAGE绛 void initobj(AniObj* obj) { obj->x = myrand((float)getwidth()); obj->y = myrand((float)getheight()); obj->r = random(20) + 20; - // 随机速度 + // 闅忔満閫熷害 obj->dx = myrand(randspeed) + base_speed; obj->dy = myrand(randspeed) + base_speed; - // 随机方向 + // 闅忔満鏂瑰悜 obj->dx = obj->dx * float(random(2) * 2.0 - 1); obj->dy = obj->dy * float(random(2) * 2.0 - 1); - // 以上的处理方式用来保证速度不过慢 + // 浠ヤ笂鐨勫鐞嗘柟寮忕敤鏉ヤ繚璇侀熷害涓嶈繃鎱 obj->alpha = random(250) + 2; obj->da = (int)random(2) * 2 - 1; @@ -48,30 +48,30 @@ void initobj(AniObj* obj) fillellipse(obj->r, obj->r, obj->r, obj->r, obj->img); } -//更新位置等相关属性 +//鏇存柊浣嶇疆绛夌浉鍏冲睘鎬 void updateobj(AniObj* obj) { - // 当前位置 + 速度 + // 褰撳墠浣嶇疆 + 閫熷害 obj->x += obj->dx; obj->y += obj->dy; - if (obj->x < 0) obj->dx = myrand(randspeed) + base_speed; //碰左 - if (obj->y < 0) obj->dy = myrand(randspeed) + base_speed; //碰上 - if (obj->x >= ege::getwidth() - obj->r * 2) obj->dx = -(myrand(randspeed) + base_speed); //碰右 - if (obj->y >= ege::getheight() - obj->r * 2) obj->dy = -(myrand(randspeed) + base_speed); //碰下 + if (obj->x < 0) obj->dx = myrand(randspeed) + base_speed; //纰板乏 + if (obj->y < 0) obj->dy = myrand(randspeed) + base_speed; //纰颁笂 + if (obj->x >= ege::getwidth() - obj->r * 2) obj->dx = -(myrand(randspeed) + base_speed); //纰板彸 + if (obj->y >= ege::getheight() - obj->r * 2) obj->dy = -(myrand(randspeed) + base_speed); //纰颁笅 - // 改变alpha值 + // 鏀瑰彉alpha鍊 obj->alpha += obj->da; if (obj->alpha <= 0) obj->da = 1; if (obj->alpha >= 0xFF) obj->da = -1; } -//根据属性值绘画 +//鏍规嵁灞炴у肩粯鐢 void drawobj(AniObj* obj) { putimage_alphatransparent(NULL, obj->img, (int)obj->x, (int)obj->y, BLACK, (unsigned char)obj->alpha); } -//释放这个对象时调用 +//閲婃斁杩欎釜瀵硅薄鏃惰皟鐢 void releaseobj(AniObj* obj) { delimage(obj->img); @@ -80,44 +80,44 @@ void releaseobj(AniObj* obj) void mainloop() { const int MAXOBJ = 30; - AniObj obj[MAXOBJ]; //定义对象数组 + AniObj obj[MAXOBJ]; //瀹氫箟瀵硅薄鏁扮粍 int n; for (n = 0; n < MAXOBJ; ++n) { - initobj(&obj[n]); //初始化 + initobj(&obj[n]); //鍒濆鍖 } for ( ; is_run(); delay_fps(60) ) { for (n = 0; n < MAXOBJ; ++n) { - updateobj(&obj[n]); //更新位置 + updateobj(&obj[n]); //鏇存柊浣嶇疆 } cleardevice(); for (n = 0; n < MAXOBJ; ++n) { - drawobj(&obj[n]); //绘画 + drawobj(&obj[n]); //缁樼敾 } } for (n = 0; n < MAXOBJ; ++n) { - releaseobj(&obj[n]); //释放 + releaseobj(&obj[n]); //閲婃斁 } } int main(void) { setinitmode(INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 closegraph(); return 0; } diff --git a/man/tutorial/t30.cpp b/man/tutorial/t30.cpp index 60aa1fd9..dbdee7f2 100644 --- a/man/tutorial/t30.cpp +++ b/man/tutorial/t30.cpp @@ -1,7 +1,7 @@ -//基础动画十,场景管理下的输入输出控制 +//鍩虹鍔ㄧ敾鍗侊紝鍦烘櫙绠$悊涓嬬殑杈撳叆杈撳嚭鎺у埗 -//本示例运行时,可以使用P键暂停或播放 -//小球会自动跟踪鼠标 +//鏈ず渚嬭繍琛屾椂锛屽彲浠ヤ娇鐢≒閿殏鍋滄垨鎾斁 +//灏忕悆浼氳嚜鍔ㄨ窡韪紶鏍 #include #include @@ -10,24 +10,24 @@ const float base_speed = 0.5f; const float randspeed = 4.0f; -//返回一个浮点数的符号 +//杩斿洖涓涓诞鐐规暟鐨勭鍙 float sgn(float f) { if (f > 0) return 1; if (f < 0) return -1; return 0; } -//自定义函数,用来返回一个0 - m之间的浮点数 +//鑷畾涔夊嚱鏁帮紝鐢ㄦ潵杩斿洖涓涓0 - m涔嬮棿鐨勬诞鐐规暟 float myrand(float m) { return (float)(ege::randomf() * m); } -//定义一个AniObj类,这个与前一个除了函数名,和update加了返回值以外没有变化 +//瀹氫箟涓涓狝niObj绫伙紝杩欎釜涓庡墠涓涓櫎浜嗗嚱鏁板悕锛屽拰update鍔犱簡杩斿洖鍊间互澶栨病鏈夊彉鍖 class AniObj { public: - //初始化,设置坐标,速度方向,透明度,创建IMAGE等 + //鍒濆鍖栵紝璁剧疆鍧愭爣锛岄熷害鏂瑰悜锛岄忔槑搴︼紝鍒涘缓IMAGE绛 AniObj() { _x = myrand((float)ege::getwidth()); @@ -51,23 +51,23 @@ class AniObj ege::fillellipse(_r, _r, _r, _r, _img); } - //释放这个对象时调用 + //閲婃斁杩欎釜瀵硅薄鏃惰皟鐢 ~AniObj() { ege::delimage(_img); } - //更新位置等相关属性 + //鏇存柊浣嶇疆绛夌浉鍏冲睘鎬 int update() { bool crash = false; - // 当前位置 + 速度 + // 褰撳墠浣嶇疆 + 閫熷害 _x += _dx; _y += _dy; - if (_x < 0) crash = true; //碰左 - if (_y < 0) crash = true; //碰上 - if (_x >= ege::getwidth() - _r * 2) crash = true; //碰右 - if (_y >= ege::getheight() - _r * 2) crash = true; //碰下 + if (_x < 0) crash = true; //纰板乏 + if (_y < 0) crash = true; //纰颁笂 + if (_x >= ege::getwidth() - _r * 2) crash = true; //纰板彸 + if (_y >= ege::getheight() - _r * 2) crash = true; //纰颁笅 if (crash) { @@ -82,14 +82,14 @@ class AniObj if (_x < 0 && _dx < 0 || _x >= ege::getwidth() - _r * 2 && _dx > 0) _dx = -_dx; if (_y < 0 && _dy < 0 || _y >= ege::getheight() - _r * 2 && _dy > 0) _dy = -_dy; - // 改变alpha值 + // 鏀瑰彉alpha鍊 _alpha += _da; if (_alpha <= 0) _da = 1; if (_alpha >= 0xFF) _da = -1; return 0; } - //根据属性值绘画 + //鏍规嵁灞炴у肩粯鐢 void render() { ege::putimage_alphatransparent(NULL, _img, (int)_x, (int)_y, ege::BLACK, (unsigned char)_alpha); @@ -118,7 +118,7 @@ class AniObj class Scene { public: - //初始化,参数为对象个数 + //鍒濆鍖栵紝鍙傛暟涓哄璞′釜鏁 Scene(int nAniObj) { m_cntObj = nAniObj; @@ -132,7 +132,7 @@ class Scene } int update() { - // 非暂停状态才更新 + // 闈炴殏鍋滅姸鎬佹墠鏇存柊 if (m_pause == 0) { for (int n = 0; n < m_cntObj; ++n) @@ -151,18 +151,18 @@ class Scene } void onkey(int key) { - if (key == 'P' || key == 'p') //按下P键就在播放与暂停之间转换 + if (key == 'P' || key == 'p') //鎸変笅P閿氨鍦ㄦ挱鏀句笌鏆傚仠涔嬮棿杞崲 { m_pause = !m_pause; } - if (key == VK_ESCAPE) //如果是ESC键,就标记为退出场景,VK_ESCAPE是SDK定义的宏 + if (key == VK_ESCAPE) //濡傛灉鏄疎SC閿紝灏辨爣璁颁负閫鍑哄満鏅紝VK_ESCAPE鏄疭DK瀹氫箟鐨勫畯 { m_endscene = 1; } } void onmouse(int x, int y) { - // 广播鼠标消息 + // 骞挎挱榧犳爣娑堟伅 for (int n = 0; n < m_cntObj; ++n) { m_pobj[n].onmouse(x, y); @@ -177,21 +177,21 @@ class Scene void mainloop() { - Scene scene(30); //定义场景,初始化参数为30 + Scene scene(30); //瀹氫箟鍦烘櫙锛屽垵濮嬪寲鍙傛暟涓30 for ( ; ege::is_run(); ege::delay_fps(60) ) { while (ege::kbhit()) { int key = ege::getch(); - scene.onkey(key); //所有按键消息发送给scene + scene.onkey(key); //鎵鏈夋寜閿秷鎭彂閫佺粰scene } while (ege::mousemsg()) { ege::mouse_msg msg = ege::getmouse(); scene.onmouse(msg.x, msg.y); } - if (scene.update()) //如果update返回非0表示场景结束,这时退出主循环 + if (scene.update()) //濡傛灉update杩斿洖闈0琛ㄧず鍦烘櫙缁撴潫锛岃繖鏃堕鍑轰富寰幆 { break; } @@ -204,13 +204,13 @@ void mainloop() int main(void) { ege::setinitmode(ege::INIT_ANIMATION); - // 图形初始化,窗口尺寸640x480 + // 鍥惧舰鍒濆鍖栵紝绐楀彛灏哄640x480 ege::initgraph(640, 480); - // 随机数初始化,如果需要使用随机数的话 + // 闅忔満鏁板垵濮嬪寲锛屽鏋滈渶瑕佷娇鐢ㄩ殢鏈烘暟鐨勮瘽 ege::randomize(); - // 程序主循环 + // 绋嬪簭涓诲惊鐜 mainloop(); - // 关闭绘图设备 + // 鍏抽棴缁樺浘璁惧 ege::closegraph(); return 0; } diff --git a/man/tutorial/t50.cpp b/man/tutorial/t50.cpp index 7478a45b..570b159d 100644 --- a/man/tutorial/t50.cpp +++ b/man/tutorial/t50.cpp @@ -7,8 +7,8 @@ class graph : public ege::egeControlBase { public: graph() { - ege::PushTarget _target; // 把当前绘图目标缓冲,函数退出时自动还原 - settarget(buf()); // 设置绘图目标 + ege::PushTarget _target; // 鎶婂綋鍓嶇粯鍥剧洰鏍囩紦鍐诧紝鍑芥暟閫鍑烘椂鑷姩杩樺師 + settarget(buf()); // 璁剧疆缁樺浘鐩爣 x = ege::random(parent()->getw()), y = ege::random(parent()->geth()); blendmode(1); size(40 * 2, 40 * 2); diff --git a/man/tutorial/t51.cpp b/man/tutorial/t51.cpp index 57e2391f..729f5b80 100644 --- a/man/tutorial/t51.cpp +++ b/man/tutorial/t51.cpp @@ -13,9 +13,9 @@ class graph : public ege::egeControlBase } CTL_PREINITEND; graph(CTL_DEFPARAM) : CTL_INITBASE(ege::egeControlBase) { CTL_INIT; - // 初始化坐标, + // 鍒濆鍖栧潗鏍囷紝 x = ege::random(parent()->getw()), y = ege::random(parent()->geth()); - // 开启透明半透明混合 + // 寮鍚忔槑鍗婇忔槑娣峰悎 blendmode(ALPHABLEND); { @@ -63,7 +63,7 @@ class Window : public ege::egeControlBase blendmode(ALPHABLEND); m_col = ege::hsv2rgb(float(ege::randomf() * 360), 1.0f, 0.2f); m_capmouse = 0; - // 绘画椭圆可见区域 + // 缁樼敾妞渾鍙鍖哄煙 ege::setbkcolor_f(0x0, filter()); ege::cleardevice(filter()); ege::setcolor((ege::color_t)EGEGRAY(0xAF), filter()); @@ -93,7 +93,7 @@ class Window : public ege::egeControlBase return 0; } void onDraw(ege::PIMAGE pimg) const { - // 重画控件背景 + // 閲嶇敾鎺т欢鑳屾櫙 ege::setbkcolor_f(m_col, pimg); ege::cleardevice(pimg); } @@ -104,7 +104,7 @@ class Window : public ege::egeControlBase ege::color_t m_col; }; -// 最简单的继承示例 +// 鏈绠鍗曠殑缁ф壙绀轰緥 class Window2 : public Window { public: