Forslag:
Code Block | ||
---|---|---|
| ||
function Min_sudoku() valg = 7; while valg ~= 0 if valg == 1 brett = zeros(9,9); brett = sudoku (brett); elseif valg == 2 lagreSpel(brett); disp('Spelet ditt har nå blitt lagra'); elseif valg == 3 brett = lastSpel(); disp('Spelet ditt har blitt lasta'); elseif valg == 4 brett = sudoku (brett); elseif valg == 5; disp('1. Enkel'); disp('2. Middels'); disp('3. Vanskelig'); disp('4. Hjerterå'); grad = input('Kva vanskelighetsgrad? '); if (grad == 1) || (grad == 2) || (grad == 3) || (grad == 4) brett = randomBrett(grad); brett = sudoku (brett); else fprintf('Ugyldig vanskelighetsgrad\n\n'); end %elseif valg == 6 %brett = sudoku (brett); end disp('Velkommen til Min Sudoku |
...
');
disp('1. Start eit nytt spel');
disp('2. Lagre spel til fil');
disp('3. Last spel frå fil');
disp('4. Fortsett å spela');
disp('5. Spel tilfeldig brett');
%disp('6. Løys gjeldane brett');
disp('0. Avslutt');
valg = input('Velg eit tal frå menyen: ');
end
end |
Code Block | ||
---|---|---|
| ||
function lagreSpel(brett)
filnavn = input('Skriv namnet på fila du vil lagra spelet til: ','s');
fid = fopen(filnavn,'w');
for i = 1: 9
for j = 1:9
fprintf(fid,'%d\n', brett(i,j));
end
end
fclose(fid);
end |
Code Block | ||
---|---|---|
| ||
function brett = lastSpel()
filnavn = input('Skriv navnet på fila du vil lasta spelet frå: ','s');
fid = fopen(filnavn);
i = 1;
j = 1;
brett = zeros(9,9);
while ~feof(fid)
aline = fgetl(fid);
brett(j,i) = str2num(aline);
i = i +1;
if i > 9
j = j + 1;
i = 1;
end
end
fclose(fid);
fprintf('Spelet har nå blitt lasta\n\n');
end |
Code Block | ||
---|---|---|
| ||
function brett = sudoku (brett)
slutt = 'N';
visBrett(brett);
while strcmp('Y',slutt) ~= 1
rad = input('Rad: ');
kol = input('Kolonna: ');
tall = input('Tall: ');
[m_rad,m_kol] = sudoku_mini_matrise(rad,kol);
if tall < 10 || tall > 0
if sum(brett(rad,:) == tall) > 0
disp('Ugyldig trekk');
elseif sum(brett(:,kol)==tall) > 0
disp('Ugyldig trekk');
elseif sum(sum(brett(m_rad,m_kol)== tall)) > 0
disp('Ugyldig trekk');
else
brett(rad,kol) = tall;
end
else
disp('Ugyldig tall');
end
visBrett(brett);
if sum(sum(brett))== 405
disp('Gratulerar! Du har klart brettet!');
return;
end
slutt = upper(input('Vil du avslutta(Y/N)? Skriv "fjern" om du vil fjerna eit tall: ','s'));
if strcmp ('FJERN', slutt)
rad = input('Rad: ');
kol = input('Kolonna: ');
brett(rad,kol) = 0;
visBrett(brett);
slutt = upper(input('Vil du avslutta(Y/N)? Skriv "endre" om du vil fjerna eit tall: ','s'));
end
end
end |
Code Block | ||
---|---|---|
| ||
function [m_rad,m_kol] = sudoku_mini_matrise(rad,kol)
if rad < 4
m_rad = 1:3;
elseif rad < 7
m_rad = 4:6;
else
m_rad = 7:9;
end
if kol < 4
m_kol = 1:3;
elseif kol < 7
m_kol = 4:6;
else
m_kol = 7:9;
end
end |
Code Block | ||||
---|---|---|---|---|
| ||||
0
5
0
2
0
4
6
1
3
0
0
9
0
3
0
0
4
8
0
0
4
0
1
5
7
0
0
0
0
2
0
7
6
0
0
9
0
0
5
0
0
0
3
0
0
9
0
0
4
5
0
1
0
0
0
0
6
7
4
0
2
0
0
4
3
0
0
8
0
9
0
0
8
2
7
9
0
1
0
3
0
|