क्या मैटलैब स्क्रिप्ट के लिए एक ही समय में दो अलग-अलग कार्यों को चलाने के लिए संभव है यदि उनके लिए आवश्यक शर्तों को एक ही समय में पूरा किया जाए?क्या मैटलैब स्क्रिप्ट के लिए एक ही समय में दो अलग-अलग कार्यों को चलाने के लिए संभव है
इस उदाहरण में, मैं एक परियोजना के रूप में मैटलैब पर दो खिलाड़ी लड़ने वाला गेम बना रहा हूं: किसी भी समय यदि दोनों खिलाड़ी कूदने की कोशिश करते हैं।
अलग-अलग के माध्यम से इसे निष्पादित करना अगर उनके भीतर लूप के साथ बयान एक खिलाड़ी को मध्य हवा में रोकता है जबकि दूसरा अपनी कूद पूरी करता है और फिर पहला खिलाड़ी सामान्य रूप से अपनी कूद जारी रखता है।
वर्तमान में मैंने कार्यों को 'हार्डकोड' किया है और उन्हें कार्यों में परिवर्तित करना चाहते हैं।
दो कूदों के उदाहरण नीचे दिए गए हैं।
दो खिलाड़ी वर्तमान में ब्लॉक भी हैं और उन्हें स्प्राइट्स में परिवर्तित करना होगा, इसलिए हर कदम, जैसे आगे चलना, सिद्धांत में लूप भी होगा, इसलिए यह प्रश्न मेरे प्रोजेक्ट के लिए सर्वोपरि है।
if double(c(1)) == 30 && double(c(2)) == 0 && jump == 0 % up
jump=1;
for dt=0:18
dy=dy+20*0.1;
y = y + dy;
set(player,'Position',[x y w h]);
pause(0.07)
if double(c(1))==122 || double(c(2))==122 || double(c(3))==122 %check for punch
if abs(x-x2)<=64 && hit2==0
h2=h2-10;
hit2=1;
x=x;
if x<x2
x2=x2+2*dx;
elseif x>x2
x2=x2-2*dx;
end
if h2<=0
disp('YOU WIN');
else
set(health2,'position',[640-h2 0 h2 20])
end
set(player2,'position',[x2 y2 wp hp])
end
elseif double(c(1))==120 || double(c(2))==120 || double(c(3))==120 %check for kick
if abs(x-x2)<=70 && hit2==0
h2=h2-15;
hit2=1;
x=x;
if x<x2
if x2>=580
x2=580;
elseif x2<580
x2=x2+6*dx;
end
elseif x>x2
if x2<=0;
x2=0;
elseif x2>0
x2=x2-6*dx;
end
end
if h2<=0
disp('YOU WIN');
else
set(health2,'position',[640-h2 0 h2 20])
end
set(player2,'position',[x2 y2 wp hp])
end
end
end
dy=-dy;
y=126;
jump=0;
hit2=0;
end
if double(f(1))==105 && double(f(2))==0 && jump2 == 0 %player 2 up
jump2=1;
for dt2=0:1:18
dy2=dy2+20*0.1;
y2=y2+dy2;
set(player2,'position',[x2 y2 wp hp]);
pause(0.07)
if double(f(1))==103 || double(f(2))==103 || double(f(3))==103 %Player 2 check for punch
if abs(x-x2)<=64 && hit1==0
h1=h1-10;
hit1=1;
x2=x2;
if x<x2
if x>=580
x=580;
elseif x<580
x=x-2*dx;
end
elseif x>x2
if x<=0
x=0;
elseif x>0
x=x+2*dx;
end
end
if h1<=0
disp('Player 2 YOU WIN');
else
set(health,'position',[0 0 h1 20])
end
set(player2,'position',[x2 y2 wp hp])
end
elseif double(f(1))==104 || double(f(2))==104 || double(f(3))==104 %check for kick
if abs(x-x2)<=70 && hit1==0
h1=h1-15;
hit1=1;
x=x;
if x<x2
if x>=580
x=580;
elseif x<580
x=x+6*dx;
end
elseif x>x2
if x<=0;
x=0;
elseif x>0
x=x-6*dx;
end
end
if h1<=0
disp('Player 2 YOU WIN');
else
set(health1,'position',[0 0 h1 20])
end
set(player,'position',[x y w h])
end
end
end
dy2=-dy2; %#ok<*NASGU>
y2=126;
jump2=0;
hit1=0;
end
मैं एक अलग तरीके से इस को हल करने का सुझाव देते हैं मैच के लिए लगता है। किसी भी समय टी को देखते हुए, दिए गए कार्यों का एक सेट किया जाना चाहिए (ए खाली हो सकता है)। किए जाने वाले कार्यों को एकत्रित करें, फिर प्रदर्शन करें, और उसके बाद परिणाम दिखाएं। – mmgp