Code covered by the BSD License  

Highlights from
tetris

from tetris by Richard Moore
This is a very short (~50 line) and simple tetris game.

tetris.m
%tetris.m
%Richard Moore, Feb 2013
%This will be a simple tetris game.

board = zeros(20,16);
pieces{1} = [1 1; 1 1];
pieces{2} = [1 1; 0 1; 0 1];
pieces{3} = [1 1; 1 0; 1 0];
pieces{4} = [0 1 1; 1 1 0];
pieces{5} = [1 1 0; 0 1 1];
pieces{6} = [1 1 1 1];
pieces{7} = [0 1 0; 1 1 1];
a = figure;
b1 = uipanel('parent',a,'units','normalized','position',[0 0.1 1 0.9]);
b2 = uipanel('parent',a,'units','normalized','position',[0 0 1 0.1]);
c = axes('parent',b1);
d = uicontrol('parent',b2,'style','edit');
hold on;
score = 0;
CurrPieceInd = 0;
while 1<10
    pause(0.3.*1./(1+floor(score/5)));%pause(0.1);
    if CurrPieceInd == 0
        CurrPieceInd = ceil(7*rand);
        CurrPiece = pieces{CurrPieceInd};
        CurrRow = 0;
        CurrCol = floor(size(board,2)/2);%10;
    end
    dischar = get(gcf,'currentchar');
    switch dischar
        case 'a'
            CurrCol = CurrCol - 1;
        case 'd'
            CurrCol = CurrCol + 1;
        case 'w'
            CurrPiece = rot90(CurrPiece);
    end
    set(gcf,'currentchar','h');
    CurrRow = CurrRow + 1;
    board2 = board;
    board3 = zeros(size(board));
    board3((CurrRow:(CurrRow + size(CurrPiece,1)-1)),(CurrCol:(CurrCol + size(CurrPiece,2)-1))) = CurrPiece;
    if (CurrRow + size(CurrPiece,1) - 1)<=size(board,1)&&(sum(sum(board.*board3,1),2)==0)
        board2((CurrRow:(CurrRow + size(CurrPiece,1)-1)),(CurrCol:(CurrCol + size(CurrPiece,2)-1))) = CurrPiece|board2((CurrRow:(CurrRow + size(CurrPiece,1)-1)),(CurrCol:(CurrCol + size(CurrPiece,2)-1)));
        imshow(board2,[],'InitialMagnification','fit','parent',c);
        drawnow;
    else
        CurrPieceInd = 0;
        board2(((CurrRow-1):(CurrRow + size(CurrPiece,1)-2)),(CurrCol:(CurrCol + size(CurrPiece,2)-1))) = CurrPiece|board2(((CurrRow-1):(CurrRow + size(CurrPiece,1)-2)),(CurrCol:(CurrCol + size(CurrPiece,2)-1)));
        board = board2;
    end
    RowTest = prod(board,2);
    if sum(RowTest)>0
        Fulls = find(RowTest==1);
        board((Fulls(1)+1):end,:) = board((Fulls(1)+1):end,:);
        board(2:(Fulls(1)),:) = board(1:(Fulls(1)-1),:);
        board(1,:) = 0;
        score = score + 1;
    end
    figure(gcf);
end

Contact us