MATLAB游戏编程实例(拼

时间:2019-05-14 12:40:08下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《MATLAB游戏编程实例(拼》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《MATLAB游戏编程实例(拼》。

第一篇:MATLAB游戏编程实例(拼

MATLAB游戏编程实例(拼图)

这是一个简单的游戏,只要把数字按顺序排好就可以了。游戏方法是用鼠标点中数字,如果该数字相邻的格子为空,则自动移到到该空格。

本程序是由realghost编写,如果有问题可以与 slqinyi@163.com 联系。

附图如下:

function pintu1()A = gen()

G = [1 2 3;4 5 6;7 8 0];drawmap(A);

while 1

[xpos,ypos] = ginput(1);col = ceil(xpos);row = 3-ceil(ypos)+1;num = A(row,col);

if row>1&A(row-1,col)==0 A(row-1,col)= num;

A(row,col)= 0;

end

if row<3&A(row+1,col)==0 A(row+1,col)= num;A(row,col)= 0;

end

if col>1&A(row,col-1)==0 A(row,col-1)= num;A(row,col)= 0;

end

if col<3&A(row,col+1)==0 A(row,col+1)= num;A(row,col)= 0;

end

drawmap(A)

zt = abs(A-G);

if sum(zt(:))==0

msgbox('ÄãÒѾ-³É¹¦Æ´ºÃͼ£¡')break

end end

function drawmap(A)clf;hold on

line([0 3],[0 0],'linewidth',4);line([3 3],[0 3],'linewidth',4);line([0 3],[3 3],'linewidth',4);line([0 0],[0 3],'linewidth',4);

for i = 1:3

for j = 1:3

drawrect([j-1 3-i],[j 3-i],[j 3-i+1],[j-1 3-i+1],'y',A(i,j));

end end

axis equal axis off

function drawrect(x1,x2,x3,x4,color,num)x = [x1(1)x2(1)x3(1)x4(1)];y = [x1(2)x2(2)x3(2)x4(2)];fill(x,y,color)if num==0

text(0.5*(x1(1)+x2(1)),0.5*(x1(2)+x4(2)),' ','fontsize',24)else

text(0.5*(x1(1)+x2(1))-0.05,0.5*(x1(2)+x4(2)),num2str(num),'fontsize',24)end

function y = gen()y = inf*ones(1,9);for i = 1:9

while 1

a = randint(1,1,9);

if isempty(find(y==a))y(i)= a;break

end

end end

y = reshape(y,3,3);

当然可以啦,其实图像就是数字矩阵,图像的拼接就是矩阵的拼接,横着拼得行数相等,竖着拼得列数相等就行

例子

clc;clear;

a=imread('我的图片.jpg');[m n t]=size(a);

b=a(1:fix(m/2),:,:);%取图像的上半部分

c=a(fix(m/2)+1:end,:,:);%取图像的下半部分

figure(1);imshow(b);

figure(2);imshow(c);

%注意,上下拼接要求两幅图的列数要相同 %左右拼行数要相同

figure(3);d=[b;c];%把b,c拼起来,若左右拼接d=[b,c];imshow(d);

第二篇:数控机床编程实例(本站推荐)

一、两种特殊的圆弧编程指令:CT和RND

常用的圆弧编程指令是G2和G3,使用时必须编入圆弧起点坐标,终点坐标、圆弧半径或中心坐标,可处理各种类型的圆弧编程。西门子810D/840D系统中的CT和RND指令也可以生成精确的圆弧轨迹,在加工轮廓中出现用圆弧与其他直线或圆弧相切连接的轨迹时,灵活运用CT和RND指令进行圆弧编程比使用G2和G3指令方便得多:

1、RND指令处理轮廓拐点的圆弧过渡

RND指令的含义:轮廓拐点处用指定半径的圆弧过渡处理,并且和相关的直线或圆弧相切连接,数控系统自动运算各个切点的坐标。

参照图1 加工内容为底边外的其余轮廓,所用程序如下。

N005 G54 G90 G0 Z100 T1 D1

N010 X-70 Y-50

N015 M03 S1000 F500 Z-10

N020 G41 Y-20

N025 G1 Y70 RND=5

N030 G1 X-40 RND=5

N035 G3 ×0 CR=20 RND=5

N040 G3 ×40 CR=20 RND=5

N045 G1×70 RND=5

N050 G1 Y-30

N055 M30

程序中用RND=5的格式表示轮廓拐点处用半径R5的圆弧过渡处理,并与相关的直线或圆弧相切连接,数控系统自动运算各个切点的坐标,程序中不需写入切点的坐标。而用G2和G3指令编写各处R5圆弧就必须计算各个切点的坐标(共10个点),还多了五条程序。

2、CT指令完成直线和圆弧或圆弧和圆相切边接

CT指令的含义是:经过一段直线或圆弧的结束点P1和另一个指定点P2生成一段圆弧并且和前面的直线或圆弧在P1点处相切,数控系统自动运算圆弧半径CT指令是模态的。

参照图2 加工内容为底边外的其余轮廓,所用程序如下:

N005 G54 G90 G0 Z100 T1 D1

N010 X-90 Y-120

N015 M03 S1000 F500Z-10

N020 G41Y-100

N025 G1 Y20

N030 X-60

N040 Yo

N045 CT X-20(第一个R20圆弧)

N050 X20(第二个R20圆弧)

N055 X60(第三个R20圆弧)

N060 G1 Y20

N065 G1×90

N070 Y-100

N075 M30

用CT在编制程序时只需输入切点坐标而不用写入圆弧半径,也不用判断圆弧的方向,在直线和圆弧或多段圆弧相切连接的轮廓编程时使用非常方便。

3、CT和RND指令在极坐标系中的应用

在极坐标系中用G2和G3指令编程时有一个限制,极点必须设定在所编程圆弧的中心。而用CT和RND指令就很好地克服了这一障碍。

(1)RND指令在极坐标系中的应用

参照图3在数控铣床加工4个30度的V型槽,以90度位置的V型槽为例程序如下。

N005 G54 G0 T1 D1 Z100

N010 G111 Xo YO

N015 AP=90-15 RP=110

N020 M03 S1000 F500 Z10

N025 G42 RP=100

N030 G1 RP=0 RND=10

N035 G1 RP=100

N040 M30

(2)CT指令在极坐标系中的应用。

参照图4 加工上部的3段圆弧和2段直线相切连接的部位,程序如下。

N005 G54 G90 Go Z100 T1 D1

N010 G111 XO YO

N015 AP=90-36-18 RP=150

N020 M03 S1000 F500 Z-10

N025 G42 RP=130

N030 G1 RP=142.66/2

N035 CT AP=90-18

N040 AP=90+18

N045 AP=90+18+36

N050 G1 RP=150

N055 M30

图3和图4 这两种类型的工件加工部位使用算术坐标系编程数据处理比较麻烦,在极坐标系中用G2和G3指令编程圆弧时极点必须设定在所编圆弧的中心,需要一些计算工作,而使用RND和CT指令编程圆弧时,极点就不必设定在所编圆弧的中心,极点可以设定在任意的方便数据处理的位置。图3和图4 这两种类型的工件加工部位在编程时使用极坐标且极点设定在工件中心最为方便。

二、特殊刀具补偿方法在加工扇形段导入板中的应用

1、一般的刀具补偿方法

参照图5,在数控铣上用40mm立铣刀加工60H7的槽,按照槽的边界线进行编程,使用的程序如下。

N005 G54 G90 Go Z100 T1 D1

N010 X-150 YO

N020 M03 S300 F100 Z30

N025 G42 Y30

N030 G1×150

N035 Y-30

N040 X-150

N050 M30

实际加工中要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿值先大后小分别是22mm,20.5mm,20mm(理念值,最终的半径补偿值要经过实际测量确定)。

2、特殊的刀具补偿方法

参照图5,在数控铣床上40mm立铣刀加工60H7的槽,按照中心线进行编程,使用的程序如下。

N005 G54 G90 GO Z100 T1 D1

N010 X-150 YO

N020 M03 S300 F100 Z30

N025 G42 X-140

N030 G1 X150

N035 GO Z100

N040 G40 X-150

N050 Z30

N055 G41 X-140

N060 G1 X150

N065 GO Z100

N070 M30

实际加工中要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿先小后大分别是8mm、9.5mm,10mm(理论值,最终的半径补偿值要经过实际测量后确定),最终的半径补偿理论值=槽的宽度/2-刀具半径。在程序中分别用G41和G42激活两次刀补,增加了一次空行程,这种使用刀具半径补偿的方式在加工一般类型的工件时显得很麻烦,但是在加工特定类型的工件时使用这种方法就会使编程工作变得非常简单。

3、在加工扇形段导入板中的应用

在一些比较特殊槽体的加工中,图纸中只标注槽的宽度、深度和中心线的形状尺寸,针对这一类型的工件,按照中心线进行编程,加工中应用特殊的刀具补偿方法。

参照图6,这是我公司薄板厂连铸设备中使用的扇形段导入板,它是扇形段导入装置中的关键零件。用Tk6920数控锉铣床的加工七条128×44mm导入槽。该工件的七条导入槽是由多段圆弧和直线相切连接构成,图纸中只标注了槽的宽度、深度和中心线的形状尺寸,以上部第一个导入槽为例说明特殊的刀具补偿使用方法,按照中心线进行编程。

程序名称:CA01

程序内容:N5 G54 G90 G64 GO Wo Z150 T1 D1(调用第一个刀号)

N10 G111 XO YO

N15 X=-1804-100 Y=464.424

N20 M04 S250 F200 Z-44

N25 G41 X=IC(50)(激活刀补开始加工槽体的上边界)

N30 G1 X=-1804+920.617

N35 CT AP=90-16.03 RP=1499.5

N40 G1 AP=90-16.03 RP=1499.5+100

N45 GO G40 X=IC(100)Z150

N50 X=-1804-100 Y=464.424 T1 D2(调用第二个刀号)

N55 G42 X=IC(50)(激活刀补开始加工槽体的下边界)

N60 G1 X=-1804+920.617

N65 CT AP=90-16.03 RP=1499.5

N70 G1 AP90-16.03 RP=1499.5+100

N75 GO G40 X=IC(100)Z150

N80 M30

槽的宽度和中心线不对称,程序中用了两个刀号,加工槽体的上边界时用D1,加工槽体的下边界是时用D2,实际加工中用50mm铣刀要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿值先小后大分别是D1=100mm,12mm,12.5mm,D2=13mm,15mm,15.5mm.如果使用一般的刀具补偿使用方法,按照槽的边界线进行编程,就要计算槽的边界线中各段圆弧和直线切点的坐标以及各段圆弧的半径,计算量是非常大的。而按照中心线进行编程就可直接使用力纸上标注的尺寸,避免了大量、繁琐的数据计算工作,保证了程序中所用数据的准确性,极大的提高了编程效率。

其方法有两个特殊:

(1)按照中心线进行编程而不是按照真实的加工边界线进行编程。

(2)刀具补偿值按照粗加工、半精加工和精加工的顺序逐渐加大,理论补偿值二加工的边界到中心线的距离--刀具半径。优点是直接使用图纸上标注的尺寸进行编程,保证了程序中所用数据的准确性,不需进行大量繁琐的数据计算工作。

第三篇:MATLAB 编程题总结

MATLAB 编程题总结

LY 1.输出x,y两个中值较大的一个值。

x=input('x=');y=input('y=');if x>y x else y end 2.输入x,计算y的值。计算函数的值yx1,x0

2x1,x0x=input('x=');if x<0 y=x+1 else y=2*x-1 End 3.输入一学生成绩,评定其等级。方法是:90~100分为“优秀”,80~89分为“良好”,70~79分为“中等”,60~69分为“及格”,60分以为“不合格”

x=input('x=');if x>100 | x<0 y='输入错误' elseif x>=90 y='优秀' elseif x>=80 y='良好' elseif x>=70 y='中等'

elseif x>=60 y='及格' else

y='不合格' end

4.某购物超市节日期间举办购物打折扣的促销活动,优惠办法是:每位顾客当天一次性购物在100元以上者,按九五折优惠;在200元以上者,按九折优惠;在300元以上者,按八五折优惠;在500元以上者,按八折优惠。则可以根据顾客购物款数计算出优惠价。

x=input('x=');if x>=500

y=x*0.8 elseif x>=300 y=x*0.85 elseif x>=200 y=x*0.9 else

y=x*0.95 end

5.编程计算:S=1+2+3+„+100

sum=0;

for i=1:100 sum=sum+i;end sum

6.计算1~100的奇数和.sum=0;

for i=1:2:100 sum=sum+i;end Sum 或

sum=0;

for i=1:100

if mod(i,2)==1 sum=sum+i;end

end sum

7.百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。

设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:

x+y+z=100 3x+2y+0.5z=100

三个未知数,两个方程,此题有若干个解。

for x=1:33

for y=1:50

for z=1:200

if x+y+z==100 & 3*x+2*y+0.5*z==100 [x,y,z] end end end end

8.我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n

LiYang

第 1 页 / 共 6 页

MATLAB 编程题总结

LY n=1;m=13;while m<26 m=m*(1+0.008);n=n+1;end n 9.求水仙花数,水仙花数是指一个 n 位数(n≥3),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)(求出1000以内)

for i=100:999 a(1)=fix(i/100);a(2)=fix((i-a(1)*100)/10);a(3)=i-a(1)*100-a(2)*10;if a(1)^3+a(2)^3+a(3)^3==i i end end 10.鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头36个,脚100个,求笼内关了多少只兔子和多少只鸡?

for i=1:50 for j=1:36 if i+j==36&i*2+j*4==100 [i,j] end end end 1.用matlab编程求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表

示一个三位数)。

for x=1:9

for y=1:9 for z=1:9

i=100*x+10*y+z+100*y+10*z+z;

if i==532 [x,y,z] end end end end

2.用matlab编程完成用一元人民币换成一分、两分、五分的所有兑换方案(即输出所有的组合方式)。

for i=0:20

for j=0:50

k=100-i*5-j*2;if(k>=0)[i,j,k] end end end

3.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完,请用matlab编程计算。

day=0;x1=1020 while(x1)

x2=x1/2-2;x1=x2;

day=day+1;

end day

4.有一堆零件(100到200之间),如果分成4个零件一组的,则多2个零件;若分成7个零件一组的,则多3个零件;若分成9个零件一组的,则多5个零件。用matlab编程求这堆零件总数。

for i=100:200

if(mod(i-2,4)==0)

if(mod(i-3,7)==0)

if(mod(i-5,9)==0)i end end end end

5.编写程序,求1000至9999之间的回文数.回文数是指正读与反读都一样的数,如1221.for i=1000:1000:9999 for j=0:9

n=i+j*100+j*10+i/1000 end 6.作函数

yend sin(x),x[0,2]的图象,用蓝色五角星表示点。

x=0:pi/10:2pi;y=sin(x);

plot(x,y,’b-p’);

LiYang

第 2 页 / 共 6 页

MATLAB 编程题总结

LY 1: 编写M函数 32fx2xx6.3, x20.05x3.14计算f(1)f(2)f2(3)

function y= fun1(x)y=(x^36.3)/(x^2 + 0.05*x-3.14);fun1(1)*fun1(2)+fun1(3)*fun1(3)ans =-12.6023 2:编写M函数x1,x2f(x)3x,2x84x5,8x20,cosxsinx,x20计算f(0.1),f(1),f(9),f(22),f(2)

function y=fff(x)if x<2 y=x+1;elseif x>=2 & x<=8 y=3*x;elseif x>8 & x<=20 y=4*x-5;else y=cos(x)+sin(x);end 3:根据pi*pi/6=1/1^2+1/2^2+1/3^2+„„+1/n^2,求pi的近似值。当n分别取100,1000,10000时,结果是多少?

y=0;n=100;

for i=1:n y=y+1/i/i;end y y =

1.6350 pi=sqrt(6*y)pi =

3.1321 y=0;n=1000;for i=1:n y=y+1/i/i;end y y =

1.6439 pi=sqrt(6*y)pi =

3.1406 y=0;n=10000;for i=1:n y=y+1/i/i;end y y =

1.6448 pi=sqrt(6*y)pi =

3.1415(2)y=0;n=8;

y=1./2*n-1;y y=

4:编程求[100,200]之间第一个能被21整除的整数。

for n=100:200 if rem(n,21)~=0 continue end break end

n

5:编写函数文件求半径为r的圆的面积和周长。

function [s,p]=fcircle(r)s=pi*r*r;p=2*pi*r;

6:根据y=1+11,求: 3152n-1(1)y<3时的最大n值。(2)与(1)的n值对应的y值。

y=1;n=1;while(y<3)n=n+2;y=y+1/n;

end

y=y-1/n n=(n+1)/2 运行结果: y =

2.9944

n =

LiYang

第 3 页 / 共 6 页

MATLAB 编程题总结

LY 57 7: 已知f11,n1f20,n2f31,n3

fnfn12fn2fn3,n3求f中:

1~f100最大值、最小值、各数之和。

f(1)=1;f(2)=0;f(3)=1;for i=4:100

f(i)=f(i-1)-2*f(i-2)+f(i-3);end max(f)min(f)sum(f)

1.编程计算3+33+333+3333+„..前10项之和。

m=3;n=0;s=0;for i=1:10 n=10*n+m;s=s+n;end s

2.编程求

1-1/2+1/3-1/4+.......+1/99-1/100的值。

s=0;

for i=1:100

s=s+(-1)^(i-1)*1/i;end

s3.编写程序,求 1-3+5-7+„-99+101的值。

s=0;j=1;

for i=1:2:101

s=s+(-1)^(j-1)*i;j=j+1;end

s4.编写程序,输出从公元1000年至2000年所有闰年的年号。判断公元年是否为闰年的条件是:

(1)公元年数如能被4整除,而不能被100

整除,则是闰年;

(2)公元年数能被400整除也是闰年。

for year=1000:2000

if(mod(year,4)==0&mod(year,100)~=0)|mod(year,400)==0 year end end

5.将10个整数输入到一个数组中,然后再将

其按输入顺序的逆序进行排列并输出。

for i=1:10

a(i)=input('x=');end

for i=10:-1:a(i)end

6.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次反弹多高?

Sn=100;Hn=Sn/2;for n=0:10

Sn=Sn+2*Hn;Hn=Hn/2;end Sn Hn

7.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,见只剩一个桃子了。求第一天共摘多少桃子。

day=9;x=1;while(day>0)x=(x+1)*2;day=day-1;end x

LiYang

第 4 页 / 共 6 页

MATLAB 编程题总结

LY 附:

matlab期中试卷及答案

一、计算题

1.已知A=[1 2 3;4 5 6;7 8 9],B=[1 5 0;1 0 3;0 3 4],试写出下列指令运行的结果: A<=2=,A*B=,A(1, :)*A(:, 3)=。

2.设a= [1,-2,3;4,5,9;6,3,-8], b= [2,6,1;-3,2,7;4,8,-1]。

(1)求a.*b

(2)求a.^2

(3)求 2-a

(4)求a(1:2,2:3)

(5)求min(a(:))

二、计算下列程序运行的结果

1、mysum=0;i=1;

while(i<100)

mysum=mysum+i;

i=i+1;

end

mysum

2、A=[1,2,3;4,5,6;7,8,9];

C=[A;[10,11,12]];

D=C(1:3,[2 3]);

E=C(1:3,:)

写出C、D、E的结果

3、x=[0,1,0,10,1,0,1];

for i=1:7 if x(i)==0

x(i)=1;

else

500≤price<1000

5%折扣

x(i)=0;

1000≤price<2500

8%折扣

end

2500≤price<5000

10%折扣

end 5000≤price

14%折扣

x

输入所售商品的价格,求其实际销售价格。

4、c=6;d=[4,0,6;0,8,0];(3)fibonccci数组的元素满足fibonacci规则:

x=d & c ak+2=ak+ak+1,(k=1,2,…);且a1=a2=1。现要求求出该数组中

y=d|c 第一个大于10000的元素。

z=~d

(4)计算1!+2!+3!+4!+5!+6!+„+n!值的程

写出x、y、z的结果

序。(n可以自由输入)

三、(1)建立M函数完成下列运算(函数名为

五、分析下面程序运行后s1,n1,s2,n2,m的值.jygxfun)

s1=0;s2=0;n1=0;n2=0

f(x,y,z)ze(xy)xyzsin(xy3z)x=[1,-4,-8,3,10,-9,7,-3,10, 8,-5,-2,2,0 ];

m=length(x);(2)若x=1,y=2,z=3,采取调用jygxfun方式计算

for i=1:m f值, 试编程.if x(i)<0

四、(1)编程计算下面问题, x值由键盘输入

s1=s1+x(i);2n1=n1+1;

yx1,x1else x2,1x

1s2=s2+x(i);

n2=n2+1;

(input语句).x21,x1 end

end

(2)某商场对顾客所购买的商品实行打折销

s1,n1,s2,n2,m 售,标准如下(商品价格用price来表示):

2.(1)

price<200

没有折扣

2-12

200≤price<500

3%折扣

a.*b=-12 10

24

LiYang

第 5 页 / 共 6 页

MATLAB 编程题总结

LY(2)1 a.^2= 16 25 81 36 9

64(3)2-a= 1

4-1-2

–7(4)-4

-1-2 a(1:2,2:3)= 5

(5)min(a(:))=-8 二1、4950

2、C =1 10 D = E = 1

3、x =1

0

0

0

4、x = 1

0

0

0

y = 1 z = 0

0

0

三、解:(1)

function [f]=jygxfun(x,y,z)

f=z*exp(-(x+y))+sqrt(x+y+z)*sin(x+y+3*z);(2)

x=1;y=2;z=3;f= jygxfun(x,y,z)

四、(1)解: x=input('x=?');

if x>=1

y=x^2+1;else if x<-1 y=x^2-1;else y=x^2;end end

y

(2)price=input('请输入商品价格');switch fix(price/100)

0 case {0,1}

%价格小于200 rate=0;

case {2,3,4} %价格大于等于200但小于500

rate=3/100;

case num2cell(5:9)%价格大于等于500但小于1000

rate=5/100;

case num2cell(10:24)%价格大于等于1000但小于2500

rate=8/100;

case num2cell(25:49)%价格大于等于2500但小于5000

rate=10/100;

otherwise %价格大于等于5000 rate=14/100;end

price=price*(1-rate)%输出商品实际销售价格(3)

(4)n=input('n=')

s=0

for i=1:n

m=1

for j=1:i

m=m*j;

end

s=s+m;end s

五、s1=-31;n1=6;s2=41;n2= 8;m= 14

LiYang

第 6 页 / 共 6 页

第四篇:Matlab编程习惯总结

好的编程习惯

为了增强程序的可读性,在if 结构体开头缩进两格或更多的空间。编程隐患

确保变量名的前三十一个字符是独一无二的,否则,MATLAB 将辨认不出两变量的不 同。编程隐患

如果变量名与MATLAB 中的函数或命令重名,那么这个函数或命令将不能被访问 好的编程习惯

给你的变量起一个描述性的且易于记忆的变量名。例如,货币汇率可以exchange_rate 为变量名。这种方法将使得你的程序更加明确且易于理解。好的编程习惯

在每次用到一个变量时,我们要确保变量名的大小写的精确匹配。在变量名中只使用

小写字母是一个好的编程习惯。好的编程习惯

在MATLAB 赋值语句后加上一个分号来禁止变量值在命令窗口(The Command Windows)的重复。这将大大提高编译的速度。好的编程习惯 如果你在调试程序时需要检测一个语句的结果,可能把句后的分号去掉,这样结果将

会出现在命令窗口(The Command Windows)。编程隐患

不要重定义有意义的预定义变量。否则将后患无穷,制造成出小而难以发现的错误。编程隐患

fprintf 函数只能复数的实部,所以在有复数参加或产生的计算中,可能产生错误的结 果。好的编程习惯

如果数据需要在MATLAB 和其他程序之间交换使用,那么以ASCII 格式存储数据。

如果只在MATLAB 中使用那么,应以mat 文件的形式存储数据。好的编程习惯

以“dat”的扩展名保存ASCII 数据文件,以区别于以“mat”为扩展名的mat 文件。编程隐患

在你的MATLAB 代码中,仔细区分数组运算和矩阵运算。数组乘法和矩阵乘法极易混 淆。好的编程习惯 当你读取和写入数据时,使用适当的单位

自上而下的编程方法是我们正规编程设计的基础。1.清晰地陈述你所要解决的问题

编写的程序大多数情况下要满足一些感觉上的需要,但这种需要不一定能够被人清晰地

表达出来。例如,用户需要一个解线性方程组的表达式。像这样的要求就不够清楚,程序员

就很难编出一个使他满意的程序。他必须弄清楚要有多少问题需要解决?在这些方程式中有

没有对称的形式使我们的开发变得简单?程序设计者必须和使用者讨论所需的程序,他们必

须要对完成的任务有一个精确细致的描述。对问题清晰的描述可以防止误解,并且能够帮助

程序员合理的组织他的思想。上面的例子对问题合适的陈述应为: 设计一个用于解决联立线性方程组的程序,这些方程中未知数的系数为实数,最多有 20 个未知数。

2.定义程序所需的输入量和程序所产生的输出量

指定输入量和输出量,只有这样新的程序才能适应全过程计划。在这个例子中方程式的

系数可能有其预先存在的顺序,我们的新程序必须能按照顺序读取它们。相似地,也需要产 生出这个程序所要求的结果,即输出量,我们还要以一定的格式打印出来。

3.设计你的程序得以实现的算法

算法是指为某个问题找到答案一步接一步的程序。在这个阶段自上而下的编程方法发挥

了作用。编程设计者开始对这个问题进行逻辑划分,把它逐步分解为一个又一个子工作。这

个过程叫做分解(decomposition)。如果一些子工作还是比较大,设计者还可以把他它分解成

更小的块。这个过程将会继续到问题被分解成许多简单且易理解的小块为止。

在问题被分解成小块之后,每一个小块要被进一步的求精,这个过程叫做逐步求精

(stepwise refinement)。在这个过程中,设计者开始于对本小块代码总括性的描述,然后开始

一步一步地定义所需的函数,越来越具体,直到他能够转化为MATLAB 语句。逐步求精的

过程中,我们要用到的伪代码将会在下节为大家介绍。

在算法开发过程中,这个方法是非常有用的。如果设计者真正理解了解决问题这个些步

骤,他将会对问题进行分解和逐步求精。4.把算法转化为代码 如果分解和逐步求精的过程已经顺利完成,那么这一步将会异常地简单。所有程序员都

会将伪代码一句一句地转化为合适地MATLAB 语句。5 检测产生的MATLAB 程序

这一步是真正的拦路虎。首先,程序的每一部分将会被单独地检测,如果有可能的话,整个程序还要被检测一遍。在我们检测程序时,我们必须证明所有合法输入数据值都能够正

常运行。用标准的输入值检测程序,看它是否产生了值。如果在一个程序中执行的算法包含

了不同的分支,你必须检测每一个分支,以保证产生正确的答案。大程序在交付大众使用之

前,必须经过一系列地检测(图3.2)。检测的第一步有时被称为单元检测(unit testing)。在单

元检测过程中,程序的子程序将会被独立地检测以证明它的正确性。当单元检测结束之后,这个程序将进行一系列的组合,把独立的子程序联合产生出最后的程序。程序第一步的联合

通常只包括很少的子程序。通过组合这些子程序,经常用检查子程序或函数之间的联系。在

一系列地组合过程中,越来越多的子程序被加了进来,直到整个程序的完成。在每一次组合 的过程中,每一个错误都会被发现并在进行下一次组合之前纠正过来。好的编程习惯

在我们检测两数值是否相等时一定要小心,因为round off 错误可能会使两个本来应该

相等的值不相等了。这时你可以在round off 错误的范围内它是不是近似相等。好的编程习惯

if 结构体经常缩进2 到3 个空格,以增强程序的可读性。好的编程习惯

对于有许多选项的选择结构来说,最好在一个if 结构中使用多个elseif 语句,尽量不用 if 的嵌套结构。好的编程习惯

对于for 循环体总是要缩进两个或更多空格,以增强程序的可读性。好的编程习惯

在循环执行开始之前,总是要预先分配一个数组,这样能大大增加循环运行的速度。好的编程习惯

那种既可以用向量可以解决的问题,也可以用循环解决的问题,最好用向量解决,这

是因为向量执行的速度快。好的编程习惯

把大的程序分解成函数,有很多的好处,例如,程序部分的独立检测,代码的可复用

性,避免意想不到的错误。好的编程习惯

最是把全局变量声明在函数的开头,这样可以区别于本地变量。好的编程习惯

在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量。好的编程习惯

在两次函数调用之间有持久内存保存本地数据。好的编程习惯

用子函数或私有函数来隐藏特殊目的的函数,这些隐藏的函数只能被其他函数调用。

隐藏这些函数防止了它们偶然的使用,也能防止与其他公共函数重名时发生的冲突。编程隐患

当我们应用关系运算符对复数运算时,一定要小心。关系运算符>,<,<=或>=只比较

复数的实部,而不是它们的模。如果你要用这些关系运算符对一复数进行运算,比较两复 数的模将更加常见。好的编程习惯

用char 函数创建二维字符数组,我们就不用担心每一行的长度不相同了。好的编程习惯

当你访问一单元阵列时,不要把()与{}混淆。它们完全不同的运算。编程隐患

不要创建一个与已存在的数字数组重名的元阵列。如果得名了,MATLAB 会认为你把

单元阵列的内容赋值给一个普通的数组,这将会产生一个错误信息。在创建单元阵列之前,确保同名的数字数字数组已经被删除。编程隐患

应用函数text 从ascii 文件中按行格式读取数据,这个ascii 文件可能是其他语言生成的,或是由其他的应用程序生成的,例如表格。好的编程习惯

除非我们必须与非MATLAB 程序进行数据交换,存储和加载文件时,都应用mat 文

件格式。这种格式是高效的且移植性强,它保存了所有MATLAB 数据类型的细节。好的编程习惯

对于那些必须进行人工检查的数据,或对于那些必须在不同的计算机上运行的数据,用格式化文件创建数据。对于那些不需要进行人工检查的数据且在相同类型的计算机创建

并运行的数据,用无格式文件创建数据,当I/O 速度缓慢时,用格式化文件创建数组。

第五篇:游戏编程感想

游戏编程感想

班 53080907 周杰

首先,通过游戏编程课程的学习,我了解了怎么用我们所学过的知识进行游戏编程,不过对于第一开始应该用什么语言,你有许多种选择,包括Basic、Pascal、C、C++、Java等等,而且在网上关于游戏制作新手应该选择哪门语言的讨论也很多。推荐选择C和C++做为开始写游戏的语言。一些人可能会说这两种语言对于没有编程经验的新手来说有点难度,我不同意这种说法,因为我就是刚开始的也是选择这两种语言。另外C/C++在今天是两种应用范围最广的语言,因此你才会更有可能得到更多的编程和学习资源以及其他人的帮助。

其次,如果要进行游戏编程,我们要对我们在大学期间学过的相关知识有个大概的了解,游戏编程设计到经济学,统筹学,物理学,机器人学,生物学,心理学,人工智能,计算机图形学,多媒体技术,虚拟现实等等。而且它也是一个团队的合作才能完成的工作,它所涉及的工作有策划、程序、美术、音乐等。只有每个方面的工作相互配合达到完美,所设计出来的游戏才是一款经典的游戏作品。

第三,作为游戏编程,它所设计的不单单是一款游戏,如果把它想成仅仅工人们娱乐消遣的工具,那就把游戏定义的有所狭隘。游戏只是人们日常生活中所能接触到的一部分应用,它更可以应用虚拟现实的技术把这个产品应用到人们生活的方方面面,比如军事模拟训练,仿真模拟等等。

最后,不要仅仅是积累知识,用它。除非你用它们,否则你不能真正的知道和理解它们。用你所学的东西制作一个小的Demo。认真的去做书里面每个章节后面留的练习。

尽量玩更多的游戏。这样做可以给你许多灵感并能帮助你把游戏做的更好一些。这也可以给你枯燥的编程工作减轻一些痛苦。

帮助别人。在教别人或者给别人讲解的过程中你将会更加的了解自己,学到很多东西。有始有终。不要陷入“我知道我能完成这个游戏,但是我有更好的方法,因此我要继续想想我的那个方法。”如果你能完完整整的写完一个你从一开始要做的游戏,你将会学到非常非常多的东西,而且你也有东西可以证明你不是一个把什么东西都停留在嘴巴上的人。在你成为一个有经验的游戏程序员之前,请把你要做的游戏更简单更容易一些,不要贸然的去尝试写一些比较大或者很复杂的游戏。

下载MATLAB游戏编程实例(拼word格式文档
下载MATLAB游戏编程实例(拼.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    游戏编程入门

    游戏编程入门 经常有人问我,没有编程经验的人该如何开始开发游戏。在此之前,我总是一个个的尽力回答。然而,后来提相同问题的人数增长到难以处理的地步。我决定,是时候把我所有......

    拼拼音游戏

    儿童的自制能力一般都比较差,注意力集中的时间不会太长,这就需要教师根据拼音教学的内容设计不同的形式,以吸引儿童的注意力,增加儿童学习汉语拼音的兴趣。1.读儿歌、编顺口溜或......

    1综合编程实例教案

    综合编程实例 一、零件图 如图所示编制下图的加工程序,并实际加工。 二、工艺分析: 选用Φ16立铣刀、Φ12键槽铣刀、Φ10钻头进行加工,工件坐标系原点X、Y在中心,Z向原点在上表......

    元旦晚会游戏实例

    元旦晚会游戏实例 第一批参考游戏: 游戏3、官兵捉贼 用具:分别写着“官、兵、捉、贼”字样的四张小纸 人数:4个人 方法:将四张纸折叠起来,参加北京的四个人分别抽出一张,抽......

    射击游戏实例

    第七讲 射击游戏实例 学习目标:  设置显示图标的属性  运动图标中Direct to Grid类型的使用  Goto、Test函数的使用  使用交互图标的按键响应  声音图标的使用  利用Random......

    矩量法matlab程序设计实例

    矩量法matlab程序设计实例: Hallen方程求对称振子天线 一、条件和计算目标 已知: 对称振子天线长为L,半径为a,且天线长度与波长的关系为L0.5,aL,a,设1,半径a=0.0000001,因此波数......

    数控机床宏程序编程的技巧和实例

    论文: 数控机床宏程序编程的技巧和实例 2011年8月11日 前言 随着工业技术的飞速发展,产品形状越来越复杂,精度要求越来越高,产品更新换代越来越快,传统的设备已不能适应新要求。......

    三菱PLC编程实例PLC参考程序四

    深圳稻草人自动化培训 www.xiexiebang.com PLC参考程序四 程序一 交流电机Y/△形起动的控制 深圳稻草人自动化培训 www.xiexiebang.com 程序二 驱动步进电动机的控制......