Hi i am newbie in matlab and i have to make a little game for my university but i have found some difficulties!

1 view (last 30 days)
The game is about a fox that must always catch a duck!(The duck is moving by the user)I made a code but something goes wrong.Sometimes never ends and i wonder why.Plus some 'if' even when the proposal is True doesnt work!Here is my code and i would be realy happy if you can help me!
rectangle('Curvature',[0 0], 'Position', [0 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 4 1 1]);
line([2,3],[2,3],'color',[0 0 0]);
a=1.8;
b=1.8;
k=-0.15;
l=-0.1;
rectangle('Curvature',[1 1],'Position',[a b 0.4 0.4],'facecolor',[0.9 0.4 0],'edgecolor',[0.9 0.4 0]);
rectangle('Curvature',[1 1],'Position',[a+0.1 b+0.23 0.05 0.05],'facecolor',[0 0 0]);
rectangle('Curvature',[1 1],'Position',[a+0.25 b+0.23 0.05 0.05],'facecolor',[0 0 0]);
line([a+0.125 a+0.02],[b+0.15 b+0.2],'color',[0 0 0]);
line([a+0.125 a+0.02],[b+0.125 b+0.125],'color',[0 0 0]);
line([a+0.125 a+0.066],[b+0.1 b+0.05],'color',[0 0 0]);
line([a+0.275 a+0.38],[b+0.15 b+0.2],'color',[0 0 0]);
line([a+0.275 a+0.38],[b+0.125 b+0.125],'color',[0 0 0]);
line([a+0.275 a+0.334],[b+0.1 b+0.05],'color',[0 0 0]);
rectangle('Curvature',[0.8 0.8], 'Position', [a+0.15 b+0.05 0.1 0.05]);
rectangle('Curvature',[1 1], 'Position', [a+0.195 b+0.135 0.01 0.01],'facecolor',[0 0 0]);
rectangle('Curvature',[1 1], 'Position', [a+0.12 b+0.25 0.005 0.005],'facecolor',[1 1 1]);
rectangle('Curvature',[1 1], 'Position', [a+0.27 b+0.25 0.005 0.005],'facecolor',[1 1 1]);
rectangle('Curvature',[0.8 0.8], 'Position', [k l 0.3 0.2],'facecolor',[0.8 0.8 0.8],'edgecolor',[0.8 0.8 0.8]);
rectangle('Curvature',[0.8 0.8], 'Position', [k+0.23 l+0.16 0.05 0.3],'facecolor',[0.8 0.8 0.8], 'edgecolor',[0.8 0.8 0.8]);
rectangle('Curvature',[1 1], 'Position', [k+0.26 l+0.42 0.001 0.001],'facecolor',[0 0 0]);
rectangle('Curvature',[0.8 0.8], 'Position', [k+0.2735 l+0.385 0.03 0.03],'facecolor',[0.9 0.5 0], 'edgecolor',[0.9 0.5 0]);
menu('Έναρξη παιχνιδιού','start');
a=a+1;
b=b+1;
clf
rectangle('Curvature',[0 0], 'Position', [0 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 4 1 1]);
line([2,3],[2,3],'color',[0 0 0]);
rectangle('Curvature',[1 1],'Position',[a b 0.4 0.4],'facecolor',[0.9 0.4 0],'edgecolor',[0.9 0.4 0]);
rectangle('Curvature',[1 1],'Position',[a+0.1 b+0.23 0.05 0.05],'facecolor',[0 0 0]);
rectangle('Curvature',[1 1],'Position',[a+0.25 b+0.23 0.05 0.05],'facecolor',[0 0 0]);
line([a+0.125 a+0.02],[b+0.15 b+0.2],'color',[0 0 0]);
line([a+0.125 a+0.02],[b+0.125 b+0.125],'color',[0 0 0]);
line([a+0.125 a+0.066],[b+0.1 b+0.05],'color',[0 0 0]);
line([a+0.275 a+0.38],[b+0.15 b+0.2],'color',[0 0 0]);
line([a+0.275 a+0.38],[b+0.125 b+0.125],'color',[0 0 0]);
line([a+0.275 a+0.334],[b+0.1 b+0.05],'color',[0 0 0]);
rectangle('Curvature',[0.8 0.8], 'Position', [a+0.15 b+0.05 0.1 0.05]);
rectangle('Curvature',[1 1], 'Position', [a+0.195 b+0.135 0.01 0.01],'facecolor',[0 0 0]);
rectangle('Curvature',[1 1], 'Position', [a+0.12 b+0.25 0.005 0.005],'facecolor',[1 1 1]);
rectangle('Curvature',[1 1], 'Position', [a+0.27 b+0.25 0.005 0.005],'facecolor',[1 1 1]);
rectangle('Curvature',[0.8 0.8], 'Position', [k l 0.3 0.2],'facecolor',[0.8 0.8 0.8],'edgecolor',[0.8 0.8 0.8]);
rectangle('Curvature',[0.8 0.8], 'Position', [k+0.23 l+0.16 0.05 0.3],'facecolor',[0.8 0.8 0.8], 'edgecolor',[0.8 0.8 0.8]);
rectangle('Curvature',[1 1], 'Position', [k+0.26 l+0.42 0.001 0.001],'facecolor',[0 0 0]);
rectangle('Curvature',[0.8 0.8], 'Position', [k+0.2735 l+0.385 0.03 0.03],'facecolor',[0.9 0.5 0], 'edgecolor',[0.9 0.5 0]);
while a~=k-0.05 && b~=l-0.1
y=0;
if l==-0.1 && k==-0.15
q=menu('Επιλέξτε κατεύθυνση','πάνω','δεξιά');
elseif k~=-0.15 && l==-0.1
q=menu('Επιλέξτε κατεύθυνση','πάνω','δεξιά','αριστερά');
elseif k==-0.15 && l~=-0.1
q=menu('Επιλέξτε κατεύθυνση','πάνω','δεξιά','κάτω');
y=1;
elseif k~=-0.15 && l~=-0.1
q=menu('Επιλέξτε κατεύθυνση','πάνω','δεξιά','αριστερά','κάτω');
end
if q==1
a=a-1;
l=l+1;
elseif q==2
b=b-1;
k=k+1;
elseif y==0 && q==3
a=a-1;
k=k-1;
elseif y==1 && q==3
b=b-1;
l=l-1;
elseif q==4
b=b-1;
l=l-1;
end
clf
rectangle('Curvature',[0 0], 'Position', [0 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 0 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 1 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 2 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 3 1 1]);
rectangle('Curvature',[0 0], 'Position', [0 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [1 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [2 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [3 4 1 1]);
rectangle('Curvature',[0 0], 'Position', [4 4 1 1]);
line([2,3],[2,3],'color',[0 0 0]);
rectangle('Curvature',[1 1],'Position',[a b 0.4 0.4],'facecolor',[0.9 0.4 0],'edgecolor',[0.9 0.4 0]);
rectangle('Curvature',[1 1],'Position',[a+0.1 b+0.23 0.05 0.05],'facecolor',[0 0 0]);
rectangle('Curvature',[1 1],'Position',[a+0.25 b+0.23 0.05 0.05],'facecolor',[0 0 0]);
line([a+0.125 a+0.02],[b+0.15 b+0.2],'color',[0 0 0]);
line([a+0.125 a+0.02],[b+0.125 b+0.125],'color',[0 0 0]);
line([a+0.125 a+0.066],[b+0.1 b+0.05],'color',[0 0 0]);
line([a+0.275 a+0.38],[b+0.15 b+0.2],'color',[0 0 0]);
line([a+0.275 a+0.38],[b+0.125 b+0.125],'color',[0 0 0]);
line([a+0.275 a+0.334],[b+0.1 b+0.05],'color',[0 0 0]);
rectangle('Curvature',[0.8 0.8], 'Position', [a+0.15 b+0.05 0.1 0.05]);
rectangle('Curvature',[1 1], 'Position', [a+0.195 b+0.135 0.01 0.01],'facecolor',[0 0 0]);
rectangle('Curvature',[1 1], 'Position', [a+0.12 b+0.25 0.005 0.005],'facecolor',[1 1 1]);
rectangle('Curvature',[1 1], 'Position', [a+0.27 b+0.25 0.005 0.005],'facecolor',[1 1 1]);
rectangle('Curvature',[0.8 0.8], 'Position', [k l 0.3 0.2],'facecolor',[0.8 0.8 0.8],'edgecolor',[0.8 0.8 0.8]);
rectangle('Curvature',[0.8 0.8], 'Position', [k+0.23 l+0.16 0.05 0.3],'facecolor',[0.8 0.8 0.8], 'edgecolor',[0.8 0.8 0.8]);
rectangle('Curvature',[1 1], 'Position', [k+0.26 l+0.42 0.001 0.001],'facecolor',[0 0 0]);
rectangle('Curvature',[0.8 0.8], 'Position', [k+0.2735 l+0.385 0.03 0.03],'facecolor',[0.9 0.5 0], 'edgecolor',[0.9 0.5 0]);
end
menu('Game over','Ok')

Accepted Answer

Image Analyst
Image Analyst on 7 Jun 2015
Attach your m-file with the paper clip icon. Don't paste in code this long into the editor. But anyway, this link is guaranteed to solve your problem http://blogs.mathworks.com/videos/2012/07/03/debugging-in-matlab/
Also, you can't do things like this (comparing floating point numbers for equality):
while a~=k-0.05 && b~=l-0.1

More Answers (0)

Categories

Find more on Video games in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!