안녕하세용! 본삭금 후다닥 걸어요!
봄날이라 봄바람에 마음도 살랑살랑 말랑말랑 해지내요! 봄은 너무 좋은거 같아용 ㅎㅎ
다름이 아니라
학부생들 실습용으로 Matlab 프로그램을 만들고 있는 중입니다
매틀랩으로 원카드 프로그램을 짜고 있는 중인대
for 문에서 자꾸 오류가 나내요 ㅠ
실력이 너무 보잘것 없어서 그런가 봐용 ㅎㅎ
아직 짜고 있는 중이라 완성된건 아니지만
멋진 과게분들에게 도움을 요청해볼까 해서 찾아왔습니다
카드내기 부분에서 오류가 나기 시작하는대
Error using ==
Matrix dimensions must agree.
Error in onecard (line 72)
if mine{i,2} == start{1,2} | mine{i,2} == start{1,3}
요렇게 나내요
if 문 조건에 너무 많은 조건을 넣어서 그런건지;;
개속 실행하다 보면 어쩔때는 되고 어쩔때는 안되고...
미치겠내요 ㅠ
조언좀 부탁드립니다 !!
%-----------------------------------------------------------------------%
% 작성일 : 2015. 4. 13
% 작성자 : 핑크공주님
%-----------------------------------------------------------------------%
%% 변수 초기화
clear all, close all, clc;
%% 카드댁 만들기
% 카드장수 설정
number = 1:13;
% 문자열 함수 입력을 위한 셀 생성
% card = cell(1,3);
% 생성된 셀에 문자열 상수 입력
card(1,1) = {'diamond'};
card(1,2) = {'clover'};
card(1,3) = {'heart'};
card(1,4) = {'space'};
% 공행렬 생성
card2 = {0,0,0};
% % 랜덤값 생성
rn = randperm(52);
% 문자열과 숫자를 합친 카드댁 생성
for i = 1:13
diamond(i,:) = cat(2,rn(1,i),card(1,1), number(1,i));
clover(i,:) = cat(2,rn(1,13+i),card(1,2), number(1,i));
heart(i,:) = cat(2,rn(1,26+i),card(1,3), number(1,i));
space(i,:) = cat(2,rn(1,39+i),card(1,4), number(1,i));
end
% 카드덱 섞기
Total = [diamond; clover; heart; space];
Total2 = sortrows(Total);
% 섞은 카드덱 위에 공행렬 입력 (게임중 카드제출후 카드섞는대 사용)
Total2 = [card2; Total2];
%% 게임 시작
% 카드 한장 뒤집기
fprintf('카드 한장을 뒤집습니다!')
start = Total2(2, :);
sprintf('처음카드는 카드는 %s %d 입니다',start{1,2},start{1,3})
% 카드 덱에서 첫번쨰 카드 제외하기
Total3 = Total2(3:end, :);
% 사용자 카드 6장 받기
sprintf('게임을 시작합니다! 카드 여섯장을 받아옵니다!')
sprintf(' 목록 | 모양 | 카드숫자')
mine = Total3(1:6,:)
% 카드 덱에서 사용자 6장 카드 제외하기
Total4 = Total3(7:end,:);
%% while 문 시작예정지
% % 내가 들고있는 카드 장수 확인
HM = length(mine);
% 카드 내기
for i = 1:HM
if mine{i,2} == start{1,2} | mine{i,2} == start{1,3}
input_number = input('어떤 카드를 내시겠습니까? (목록번호를 넣어주세요) : ')
[x,y] = find(mine{i,1},input_number);
print_card = mine(y,:);
sprintf('낸 카드는 %s %d 입니다',print_card{1,2},print_card{1,3})
mine1 = mine{1:input_number,:};
mine2 = mine{input_number:end,:};
mine = [mine1; mine2];
break
end
if mine{i,2} == start{1,2} | mine{i,2} == start{1,3}
sprintf('카드를 가져갑니다')
draw_card = Total4(1,:);
sprintf('뽑은 카드는 %s %d 입니다',draw_card{1,2},draw_card{1,3})
mine = [mine; draw_card]
Total4 = Total4(2:end,:);
end
end