A list,

Space Wars based on MATLAB

Ii. Source code

function galactic(cmd)
%GALACTIC   Galactic game
%
%   To play this game, type: GALACTIC
%
%   Controls:
%    Mouse         Control ship
%    Left click    Shoot
%    Ctrl+P        Pause
%
%   During the game, use the game menu to set difficulty and to
%   enable/disable sound effects.  Only one game can run at a time.
%   Galactic was written and* tested on Matlab 5.3(R11), but may work with as early as Matlab 5.0 without changes. % This game may be too computationally intensefor slower systems.
%   Minimum system recommendation: 600 MHz CPU

% Pascal Getreuer 2004-2006

global MODE IMG MAP TSTEP NLIVE GAME SPR SSPR SPRP SPRT ...
HFIG HMENU SNDTMR SND;
ImgX = 80;
ImgY = 120;
if nargin < 1|cmd == 6
ClkV = [0;0;86400;3600;60;1];
KPts([6.7.4.5.8.9.10.11.12])... = [25.25.100.100.40.40.175.400.400];
if nargin == 0
GameInit(ImgY);
HFIG = figure('Name'.'Galactic'.'Numbertitle'.'off'.'Menubar'.'none'.'Color'[0.3 0.3 0.3].'Resize'.'off'.'DoubleBuffer'.'on'.'Position'[150.150.250.350].'CloseRequestFcn',[mfilename,'(1)'],...
'Pointer'.'circle');
tmp = uimenu('Label'.'&Game');
HMENU(1) = uimenu(tmp,'Label'.'&Pause');
uimenu(tmp,'Label'.'&Stop'.'Callback',[mfilename,'(8)']);
HMENU(2) = uimenu(tmp,'Label'.'&Beginner'.'Callback',[mfilename,'(10)'],...
'Separator'.'on'.'Checked'.'on');
HMENU(3) = uimenu(tmp,'Label'.'&Intermediate'.'Callback',[mfilename,'(11)']);
HMENU(4) = uimenu(tmp,'Label'.'&Expert'.'Callback',[mfilename,'(12)]);
HMENU(5) = uimenu(tmp,'Label'.'&Custom... '.'Callback',[mfilename,'(13)']);
HMENU(6) = uimenu(tmp,'Label'.'S&ound'.'Callback',[mfilename,'(14)'].'Checked'.'on'.'Separator'.'on');
uimenu(tmp,'Label'.'&Highscores... '.'Separator'.'on'.'Callback',[mfilename,'(15)]);
uimenu(tmp,'Label'.'E&xit'.'Callback',[mfilename,'(1)'].'Separator'.'on');
tmp = uimenu('Label'.'&Help');
uimenu(tmp,'Label'.'Help &Notes'.'Callback'['global MODE; if ~MODE,'. mfilename,'(7); end; msgbox({''Controls:'', '.' ' '   Mouse      Control ship' '.'' Click Shoot'', '' ' '.',...
''' Ctrl+P Pause/Unpause'', '' ' '.''Game Options (under game menu):'', '.' ' ' *  Choose beginner, intermediate, expert, or custom difficulty' '.'' *  '.'Enable/disable sound effects''},'Help Notes'') ']);
uimenu(tmp,'Label'.'&M-File Info'.'Callback'['help ',mfilename]);
uimenu(tmp,'Label'.'&About Galactic'.'Separator'.'on'.'Callback'['global MODE; '.'if ~MODE,',mfilename,'(7); end; msgbox(''Written by Pascal Getreuer, '.'August 2004.'', ''About Galactic'') ']);
colormap([0.0.0;1.1.1;0.6.0.6.1;0.4.0.4.0.7;1.1.0;0.0.5.0.5;1.0.1;0.1.1;1.0.0;0.4.0.6.0;1.1.1;0.0.0.5]);
set(HFIG,'Position'[150.150.250.350]);
IMG = zeros(ImgY,ImgX);
MAP = IMG;
SPRP = [ImgX/2,ImgY- 8 -.1;1.0.0;floor(rand(1)*(ImgX- 20)) +2.35.1];
SPRT = [1;2;6];
MODE = 0;
GAME = [0.4];
TSTEP = 0.04;
NLIVE = - 1;
drawnow;
tmp = repmat([1.2.3.2.3.6.4.10.9.14.11.16] /11.650.1);
sound(cos((1:7800)'/6).*sin((1:7800)'.*tmp(:))/3.11025);
SNDTMR = (clock)*ClkV+0.76;
set(HFIG,'WindowButtonMotionFcn',[mfilename,'(1)'].'WindowButtonDownFcn',[mfilename,'(5)']);
end
set(HMENU(1),'Label'.'&Pause'.'Callback',[mfilename,'(7)'].'Accelerator'.'P');
feval(mfilename,4);
while ~MODE
FrameStart = (clock)*ClkV;
if NLIVE > 1
NLIVE = NLIVE- 1;
if NLIVE == 1
set(HFIG,'WindowButtonDownFcn',[mfilename,'(5)']);
feval(mfilename,4);
end;
end
IMG(:) = 0;
MAP(:) = 0;
SInd = (SPRP(:,1)- 1)*ImgY+SPRP(:,2);
for k = length(SPRT):- 1:1
IMG(SSPR{SPRT(k)}+SInd(k)) = SPR{SPRT(k)};
MAP(SSPR{SPRT(k)}+SInd(k)) = k;
end
i = find(SPRT == 13);
SPRInd = MAP((SPRP(i,1)- 1)*ImgY+SPRP(i,2));
j = find(SPRInd);
if ~isempty(j)
SPRInd = SPRInd(j);
DelSPR = i(SPRT(SPRInd) == 17);
j = find(SPRT(SPRInd) >= 4&SPRT(SPRInd) <= 12);
if ~isempty(j)
DelSPR = [DelSPR;i(j)];
SPRInd = SPRInd(j);
k = find(SPRT(SPRInd) >= 5&SPRT(SPRInd) <= 9);
GAME(1) = GAME(1)+sum(KPts(SPRT(SPRInd(k))));
SPRT(SPRInd(k)) = 21;
k = find(SPRT(SPRInd) == 4);
SPRT(SPRInd(k)) = 5;
k = find(SPRT(SPRInd) >= 10&SPRT(SPRInd) <= 12);
if ~isempty(k)
SPRP(SPRInd(k),3) = SPRP(SPRInd(k),3)- 1;
SPRT(SPRInd(k(find(SPRP(SPRInd(k),3) = =4&SPRT(SPRInd(k)) == 11=))))12;
k = k(find(SPRP(SPRInd(k),3) < =0));
j = SPRInd(k);
GAME(1) = GAME(1)+sum(KPts(SPRT(j)));
SPRT(j) = 21;
SPRP(j,:) = SPRP(j,:)+repmat([4.2.0],length(j),1);
SPRP = [SPRP;SPRP(j,:)+repmat([5.0.0],length(j),1)];
SPRT = [SPRT;SPRT(j)];
end
feval(mfilename,4);
end
if ~isempty(DelSPR)
SPRT(DelSPR) = [];
SPRP(DelSPR,:) = [];
i = find(SPRT == 13);
end
end
SPRP(i,2) = SPRP(i,2)- 5;
j = i(find(SPRP(i,2) < =0));
SPRT(j) = [];
SPRP(j,:) = [];
i = find(SPRT >= 14&SPRT <= 16);
SInd = (SPRP(i,1)- 1)*ImgY+SPRP(i,2);
j = find(SPRT >= 17);
k = (SPRP(j,1)- 1)*ImgY+SPRP(j,2);
if (~isempty(i)&any(MAP(SInd+1+ImgY) == 1)) |... (~isempty(j)&any(MAP([k+4; k+8*ImgY+4; k+4*ImgY+9= =])1))
SPRT(1) = 1;
SPRT = [SPRT;18];
SPRP(length(SPRT),:) = SPRP(1, :);set(HFIG,'WindowButtonDownFcn',[mfilename,'(0)']);
GAME(2) = GAME(2)- 1;
feval(mfilename,4);
if ~isinf(SNDTMR)
WaitSnd;
sound(SND{4},11025);
SNDTMR = (clock)*ClkV+0.37;
end
end
if ~isempty(i)
SPRP(i,1) = SPRP(i,1)+SPRT(i)- 14- 1;
SPRP(i,2) = SPRP(i,2) +2;
j = i(SPRP(i,2) > ImgY- 3|SPRP(i,1) < 1|SPRP(i,1) > ImgX- 3);
SPRT(j) = [];
SPRP(j,:) = [];
end
i = find(SPRT == 17);
SInd = (SPRP(i,1)- 1)*ImgY+SPRP(i,2);
if ~isempty(i)
SPRP(i,2) = SPRP(i,2) +2;
j = i(SPRP(i,2) > ImgY9 -);
SPRT(j) = [];
SPRP(j,:) = [];
end
i = find(SPRT == 23);
SPRT(i) = [];
SPRP(i,:) = [];
SPRT(SPRT == 22) = 23;
i = find(SPRT == 21);
SPRT(i) = 22;
if ~isempty(i)&(clock)*ClkV > SNDTMR
sound(SND{1},11025);
SNDTMR = (clock)*ClkV+0.05;
end
i = find(SPRT == 20);
if ~isempty(i)
SPRT(i) = [];
SPRP(i,:) = [];
if GAME(2) >= 0
NLIVE = 25;
else
feval(mfilename,8);
end
end
i = find(SPRT == 19);
SPRT(i) = 20;
i = find(SPRT == 18);
SPRT(i) = 19;
if (length(SPRT) < 3|rand(1) < 0.03)&~NLIVE
i = sum(SPRT >= 6&SPRT <= 11);
j = rand(1);
if j < 0.56&i < 12
SPRT = [SPRT;6];
SPRP(length(SPRT),:) = floor([rand(1)*(ImgX- 15) +2,rand(1) *50+2.1]);
if (clock)*ClkV > SNDTMR
sound(SND{2},11025);
SNDTMR = (clock)*ClkV+0.28;
end
elseif j < 0.72&i < 8&GAME(1) > 100
SPRT = [SPRT;4];
SPRP(length(SPRT),:) = floor([rand(1)*(ImgX- 15) +2,rand(1) *50+2.1]);
if (clock)*ClkV > SNDTMR
sound(SND{2},11025);
SNDTMR = (clock)*ClkV+0.28;
end
elseif j < 0.87&i < 10
SPRT = [SPRT;8];
SPRP(length(SPRT),:) = floor([rand(1)*(ImgX- 15) +2,rand(1) *50+2.1]);
if (clock)*ClkV > SNDTMR
sound(SND{2},11025);
SNDTMR = (clock)*ClkV+0.28;
end
elseif sum(SPRT >= 10&SPRT <= 12) <= 1
if j < 0.92&i < 15&GAME(1) > 2500
SPRT = [SPRT;11];
SPRP(length(SPRT),:) = floor([rand(1)*(ImgX27 -) +2,rand(1) *50+2.8]);
if (clock)*ClkV > SNDTMR
sound(SND{3},11025);
SNDTMR = (clock)*ClkV+0.37;
end
elseif i > 1&GAME(1) > 600
SPRT = [SPRT;10];
SPRP(length(SPRT),:) = floor([rand(1)*(ImgX- 24) +2,rand(1) *50+2.4]);
if (clock)*ClkV > SNDTMR
sound(SND{3},11025);
SNDTMR = (clock)*ClkV+0.37;
end
end
end
Copy the code

3. Operation results

Fourth, note

Version: 2014a complete code or write plus 1564658423