為什麼這篇密碼程式碼鄉民發文收入到精華區:因為在密碼程式碼這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者popojjdd (Metamorphosis)看板MATLAB標題[討論] 設計好的程式碼在G...
密碼程式碼 在 經濟一週 EDigest|投資、理財、經濟、商業資訊平台 Instagram 的最佳解答
2020-04-28 06:27:41
【#經一速遞】 自細與父母鬥智 成逆向工程專家 港女揚威海外 FB、IG高層都Folllow 又一名香港年輕人跟「國際線」connect了!Jane Manchun Wong(黃文津)對香港人來說,是一個陌生的名字,不過活躍於Twitter的她,是「App界」的網紅,連Facebook、Inst...
各位版大好:)
我是MATLAB菜鳥QQ
正在利用MATLAB設計 猜密碼的遊戲 並使用GUI呈現
遊戲就是以前綜藝節目上出現過的終極密碼
電腦會隨機產生一個介於0~99的密碼 隨著玩家猜測 範圍會逐漸縮小
目前遇到的問題是在GUI裡執行的時候會給錯提示範圍
好比:密碼是85 範圍提示卻是密碼在90~96間
但原始程式碼在一般command window執行時卻是正常的
不知道是我忽略了什麼嗎?
像是把原始程式碼改到gui按鈕時的遺漏之類的
若有其他資訊需要提供 我會再補上
麻煩版大指點 感謝
以下是附上該按鈕的程式碼
--
function Password_Callback(hObject, eventdata, handles)
% hObject handle to Password (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
n=1;
%n為協助while迴圈進行的變數
B=0;
%下限
C=99;
%上限
pick=fix(rand*100);
while 1
pause;
prompt = { '請輸入您的密碼?'};
AddOpts.Resize = 'on';
AddOpts.WindowStyle = 'normal';
title = '密碼';
lineno = 1;
answer = inputdlg(prompt, title, lineno);
A=cell2mat(answer);
%A為玩家當次輸入的密碼
if isempty(A)
h = msgbox(['請重新輸入密碼!']) ;
elseif A==pick
h = msgbox(['恭喜您成功猜中密碼!']) ;
%h為協助跳出視窗的變數
break
elseif (A<B | A>C)
h = msgbox(['請重新輸入密碼!']) ;
else
if n==10
h = msgbox(['可惜!終極密碼是', num2str(pick),',您已失敗10次,遊戲
結束!'])
break
else
if A<pick
B=A;
h = msgbox(['你已經失敗',num2str(n),'次,終極密碼介於
',num2str(B),'到',num2str(C),...
'間。請加油!按下OK後,按任意鍵繼續遊戲。']);
n=n+1;
elseif A>pick
C=A;
h = msgbox(['你已經失敗',num2str(n),'次,終極密碼介於
',num2str(B),'到',num2str(C),...
'間。請加油!按下OK後,按任意鍵繼續遊戲。']);
n=n+1;
end
end
end
end
guidata(hObject, handles);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.229.30.95
沒有出現錯誤訊息 但是 執行結果是異常的
如同上例---> 終極密碼是85 出現的範圍提示卻是密碼在90~96間
所以我覺得可能是語法誤用
目前嘗試Debug 覺得問題可能是在於 cell2mat
原本是希望能把cell轉換成數值資料以比較大小
不過這個語法似乎是把cell轉成matrix
跟我想要的一個純數字的比較還有段距離
現在試了網路上的人設計的 cell2num 可是卻出現NAN
不知道有無方法解決~
感謝回應
※ 編輯: popojjdd 來自: 140.112.4.183 (12/17 12:58)
除錯與爬文下順利將問題解決了
參考了12362篇文大大的做法
a=str2num(char(a));
% 將cell轉成數字,非數字的都會變空集合
透過這樣的方式 把互動式輸入的cell資料轉換成數字
如此一來就可以與純量進行比較
哈 再次見證跟感謝ptt的神奇
※ 編輯: popojjdd 來自: 36.229.28.180 (12/17 23:06)