Is it possible for a matlab script to execute two different functions at the same time if the conditions being executed at the same time are fulfilled?
In this case, I am doing a bipartisan game on Matlab as a project: anytime if both players say try to jump.
Doing this with separate if commands with loops inside them makes one player stop in the air and the other ends his jump, and then the first player continues his jump, as usual.
I am currently hard-coded for actions and would like to convert them into functions.
Examples of two jumps are given below.
Both players are also blocks and must be converted to sprites, so every action, for example, walking back and forth, will also have a for loop in principle, so this question is of primary importance for my project.
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',[xywh]); 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',[xywh]) end end end dy2=-dy2; %