#!/usr/bin/env ruby
require 'qte'
require 'qpe'
require 'qtesound'
include Qte
include Qpe
include Qtesound
EXIT_XPM = [
"20 20 2 1",
"` c None",
". c #000000",
"````````````````````",
"````````````````````",
"``````````````....``",
"`````````````.....``",
"```......`````...```",
"``...````...````````",
"`...`````.....``````",
"````````......``````",
"```````.........````",
"````````....``......",
"````````....````````",
"```````..``...``````",
"``````..`````...````",
"``````..``````...```",
"``````..```````..```",
"`.......```````..```",
"```````````````..```",
"```````````````....`",
"````````````````````",
"````````````````````"]
if (!FileTest.exist?("/home/zaurus/Documents/Noukaihatu_Files"))
Dir.mkdir("/home/zaurus/Documents/Noukaihatu_Files")
end
if (!FileTest.exist?("/home/zaurus/Documents/Noukaihatu_Files/marubatu"))
Dir.mkdir("/home/zaurus/Documents/Noukaihatu_Files/marubatu")
end
if (!FileTest.exist?("/home/zaurus/Documents/Noukaihatu_Files/marubatu/s-test.txt"))
fp1 = File.new("/home/zaurus/Documents/Noukaihatu_Files/marubatu/s-test.txt", "w")
fp1.puts('Q 志賀直哉の代表作は次のうちどれ?#/home/QtPalmtop/pics/tux.png#')
fp1.puts("A 暗夜行路")
fp1.puts("M 或る男")
fp1.puts("M 富嶽百景")
fp1.puts('Q 我輩は猫であるを書いた人は?$千円札の人。$')
fp1.puts("A 夏目漱石")
fp1.puts("M 菊地筧")
fp1.puts("M 芥川龍之介")
fp1.puts("M 太宰治")
fp1.puts("Q 次のうち樋口一葉の作品でないものは?")
fp1.puts("A 三四郎")
fp1.puts("M たけくらべ")
fp1.puts("M にごりえ")
fp1.puts("M わかれ道")
fp1.puts("M 月の夜")
fp1.puts("Q END")
fp1.close()
end
if (!FileTest.exist?("/home/zaurus/Documents/Noukaihatu_Files/marubatu/m-test.txt"))
fp2 = File.new("/home/zaurus/Documents/Noukaihatu_Files/marubatu/m-test.txt", "w")
fp2.puts('Y 富士山は日本一高い山だ。#/home/QtPalmtop/pics/tux.png#$キホン$')
fp2.puts("N 八幡製鉄所は阪神工業地帯にある。")
fp2.puts("Y 太平洋へ流れる寒流は親潮と呼ばれる。")
fp2.puts("Y 紀伊山地は近畿地方にある。")
fp2.puts("N 竹島領有権問題で対立しているのはインドである。")
fp2.puts("Y スケトウダラ漁は底引き網で漁をする。")
fp2.puts("Y END")
fp2.close()
end
if (!FileTest.exist?("/home/zaurus/Documents/Noukaihatu_Files/marubatu/i-test.txt"))
fp3 = File.new("/home/zaurus/Documents/Noukaihatu_Files/marubatu/i-test.txt", "w")
fp3.puts('O consent to~#/home/QtPalmtop/pics/tux.png#');fp3.puts("U ~に同意する")
fp3.puts("O remember doing");fp3.puts("U ~したのを覚えている")
fp3.puts("O decline to do");fp3.puts("U ~することを断る")
fp3.puts("O quit doing");fp3.puts("U ~するのをやめる")
fp3.puts("O intelligible");fp3.puts("U わかりやすい")
fp3.puts("O not at all");fp3.puts("U 少しも~でない")
fp3.puts("O no longer~");fp3.puts("U もはや~ない")
fp3.puts("O ---")
fp3.close()
end
$ddd="/home/zaurus/Documents/Noukaihatu_Files/marubatu/s-test.txt"
$mmm="/home/zaurus/Documents/Noukaihatu_Files/marubatu/m-test.txt"
$iii="/home/zaurus/Documents/Noukaihatu_Files/marubatu/i-test.txt"
class MainWindow < QMainWindow
def initialize
super
self.setCaption(tr("○×問題"))
@mbx=QVBox.new(self)
self.setCentralWidget(@mbx)
dir="/home/zaurus/Documents/Noukaihatu_Files/marubatu/"
@dirLabel = QLabel.new(tr(dir), @mbx)
@fileListBox = QListBox.new(@mbx)
@fileListBox.setFocus()
readDirectory()
Qte::connect(@fileListBox, QSIGNAL("clicked(QListBoxItem *)"),self, "selectFileAction(QListBoxItem *)")
Qte::connect(@fileListBox, QSIGNAL("returnPressed(QListBoxItem *)"),self, "selectFileAction(QListBoxItem *)")
@ombx=QHBox.new(@mbx)
@dirLabel2 = QLabel.new(tr("現在設定された問題:"), @ombx)
@dirLabel3 = QLabel.new(tr($ddd), @ombx)
@dirLabel2.setFont QFont.new('Lcfont',12, QFont::Bold)
@dirLabel3.setFont QFont.new('Lcfont',12, QFont::Bold)
@pmbx=QHBox.new(@mbx)
@mbtn02qls=QPushButton.new(tr("選択問題"),@pmbx)
@mbtn=QPushButton.new(tr("選択ランダム"),@pmbx)
connect(@mbtn02qls,QSIGNAL("clicked()"),self,'sntk')
connect(@mbtn,QSIGNAL("clicked()"),self,'sntkr')
@wmbx=QHBox.new(@mbx)
@dirLabel4 = QLabel.new(tr("現在設定された問題:"), @wmbx)
@dirLabel5 = QLabel.new(tr($mmm), @wmbx)
@dirLabel4.setFont QFont.new('Lcfont',12, QFont::Bold)
@dirLabel5.setFont QFont.new('Lcfont',12, QFont::Bold)
@rmbx=QHBox.new(@mbx)
@mbtne1=QPushButton.new(tr("○×問題"),@rmbx)
@mbtne2=QPushButton.new(tr("○×ランダム"),@rmbx)
connect(@mbtne1,QSIGNAL("clicked()"),self,'mrbt')
connect(@mbtne2,QSIGNAL("clicked()"),self,'mrbtr')
@wimbx=QHBox.new(@mbx)
@dirLabel7 = QLabel.new(tr("現在設定された問題:"), @wimbx)
@dirLabel8 = QLabel.new(tr($iii), @wimbx)
@dirLabel7.setFont QFont.new('Lcfont',12, QFont::Bold)
@dirLabel8.setFont QFont.new('Lcfont',12, QFont::Bold)
@rimbx=QHBox.new(@mbx)
@mbtne7=QPushButton.new(tr("一問一答"),@rimbx)
@mbtne8=QPushButton.new(tr("一問一答ランダム"),@rimbx)
connect(@mbtne7,QSIGNAL("clicked()"),self,'iti')
connect(@mbtne8,QSIGNAL("clicked()"),self,'itir')
end
def selectFileAction(item)
dirPath = @dirLabel.text().utf8().to_str()
@fileName = item.text().utf8().to_str()
if (@fileName == "./")
# NA
elsif (@fileName == "../")
ndir = File.expand_path("..", dirPath)
@dirLabel.setText(tr(ndir))
readDirectory()
elsif (@fileName[-1, 1] == "/")
if (dirPath[-1, 1] == "/")
ndir = dirPath + @fileName.chop()
else
ndir = dirPath + "/" + @fileName.chop()
end
if (FileTest.directory?(ndir))
@dirLabel.setText(tr(ndir))
readDirectory()
end
else
$ddd=dirPath + "/" + @fileName
$mmm=dirPath + "/" + @fileName
$iii=dirPath + "/" + @fileName
a=@fileName[0,1]
if a=="i"
@dirLabel8.setText(tr(""+$iii+""))
@dirLabel5.setText(tr($mmm));@dirLabel3.setText(tr($ddd))
elsif a=="m"
@dirLabel5.setText(tr(""+$mmm+""))
@dirLabel8.setText(tr($iii));@dirLabel3.setText(tr($ddd))
elsif a=="s"
@dirLabel3.setText(tr(""+$ddd+""))
@dirLabel5.setText(tr($mmm));@dirLabel8.setText(tr($iii))
end
end
end
def accpt()
@result = true
dirPath= @dirLabel.text().utf8().to_str()
close()
end
def rjct()
close()
end
def readDirectory()
@fileListBox.clear()
dirs = Array.new()
files = Array.new()
dirPath = @dirLabel.text().utf8().to_str()
Dir.foreach(dirPath) {
|file|
if (FileTest.directory?(File.join(dirPath, file)))
dirs.push(file)
else
files.push(file)
end
}
dirs.sort.each {
|dir|
@fileListBox.insertItem(tr(dir + "/"))
}
files.sort.each {
|file|
@fileListBox.insertItem(tr(file))
}
end
def filePath()
dirPath = @dirLabel.text().utf8().to_str()
fileName = @fileLine.text().utf8().to_str()
return File.join(dirPath, fileName)
end
def iti
$iti=0
dlg = ItiDialog.new(self,"一問一答")
res = dlg.exec()
end
def itir
$iti=1
dlg = ItiDialog.new(self,"一問一答ランダム")
res = dlg.exec()
end
def sntk
$sntk=0
dlg = SntkDialog.new(self,"選択問題")
res = dlg.exec()
end
def sntkr
$sntk=1
dlg = SntkDialog.new(self,"選択ランダム")
res = dlg.exec()
end
def mrbt
$mrbt=0
dlg = MrbtDialog.new(self,"○×問題")
res = dlg.exec()
end
def mrbtr
$mrbt=1
dlg = MrbtDialog.new(self,"○×ランダム")
res = dlg.exec()
end
end
class ItiDialog < QDialog
def initialize(parent, caption)
super(parent, "ItiDialog", true)
ymkm()
setCaption(tr(caption))
if (@yorn[0]=="O") then
exitIcon = QPixmap.new(EXIT_XPM)
itiback = QLabel.new(tr(""), self)
@mrbtLbl2 = QLabel.new(tr("一問一答"), self)
@mrbtLbl3 = QMultiLineEdit.new(self)
@mrbtLbl3.setWrapColumnOrWidth(350)
@mrbtLbl3.setWordWrap(2)
@mrbtLbl3.setWrapPolicy(1)
@mrbtLbl3.setFont QFont.new('Lcfont',32, QFont::Bold)
@mrbtLbl4 = QMultiLineEdit.new(self)
@mrbtLbl4.setWrapColumnOrWidth(350)
@mrbtLbl4.setWordWrap(2)
@mrbtLbl4.setWrapPolicy(1)
@mrbtLbl4.setFont QFont.new('Lcfont',16, QFont::Bold)
@mrbtbtn1 = QPushButton.new(exitIcon,tr("終了する"),self)
@mrbtbtn3 = QPushButton.new(tr("戻る (m)"),self)
@mrbtbtn2 = QPushButton.new(tr("次へ (n)"),self)
@mrbtbtn5 = QPushButton.new(tr("解説"),self)
connect(@mrbtbtn1,QSIGNAL("clicked()"),self,'mrbtowari')
connect(@mrbtbtn2,QSIGNAL("clicked()"),self,'mrtrnm')
connect(@mrbtbtn3,QSIGNAL("clicked()"),self,'modoru')
connect(@mrbtbtn5,QSIGNAL("clicked()"),self,'kaisetu')
@image = ImgWidget.new( self )
@image.setGeometry(400,52,240,390)
@image.load(nil)
@image.update()
@key = QAccel.new(self)
@key.connectItem(@key.insertItem(Qt::Key_N), self, 'mrtrnm')
@key.connectItem(@key.insertItem(Qt::Key_M), self, 'modoru')
itiback.setGeometry(5, 2, 640, 480)
@mrbtLbl4.setGeometry(5, 52, 393, 70)
@mrbtLbl3.setGeometry(5, 130, 393, 310)
@mrbtLbl2.setGeometry(5, 8, 80, 35)
@mrbtbtn1.setGeometry(100, 8, 150, 35)
@mrbtbtn3.setGeometry(260, 8, 100, 35)
@mrbtbtn2.setGeometry(370, 8, 100, 35)
@mrbtbtn5.setGeometry(480, 8, 120, 35)
$iti==1?(@bbb=0;@nnn=1):(@hjmt=0;@zzz=0)
mrtrnm()
else
@mrbtLbl1 = QLabel.new(tr("一問一答の書式が違います!"), self)
@mrbtLbl2 = QLabel.new(tr("確認してください"), self)
@mrbtLbl1.setGeometry(5, 2, 300, 40)
@mrbtLbl2.setGeometry(5, 42, 300, 30)
end
end
def mrbtowari
close()
end
def modoru
if $iti==1
if @bbb==0 then
@mrbtLbl3.setText(tr(@ooo))
@mrbtLbl4.setText(tr(""))
@image.load(@sss)
elsif @bbb==1 then
if @qqq!=nil then
@mrbtLbl3.setText(tr(@qqq))
@mrbtLbl4.setText(tr(""))
@image.load(@aaa)
end
end
@nnn=0
else
(@bngu==2||@bngu==0)?a=@bngu-5:a=@bngu-4
@mrbtLbl3.setText(tr(@hnbn[a]))
@image.load(@gzo[a])
@mrbtLbl4.setText(tr(""))
@zzz=1
@bngu-=2
end
@mrbtbtn3.setEnabled(false)
@image.update()
end
def mrtrnm
if $iti==1
if @nnn==1 then
# gg=@bnsu-2
ff=rand((@bnsu-2)/2)
@vv=ff*2
QSound::playFile("/home/QtPalmtop/sounds/xylophone.wav")
end
@s=@vv
if @kaist[@vv]==nil
@mrbtbtn5.setEnabled(false)
else
@mrbtbtn5.setEnabled(true)
end
@image.load(@gzo[@vv])
@image.update()
@mrbtLbl3.setText(tr(@hnbn[@vv]))
if @bbb==0 then
@ooo=@hnbn[@vv]
@sss=@gzo[@vv]
@bbb=1
elsif @bbb==1 then
@qqq=@hnbn[@vv]
@aaa=@gzo[@vv]
@bbb=0
end
@mrbtLbl2.setText(tr("問題"+ff.to_s))
if @nnn==1 then
if @ggg==0 then
@mrbtLbl4.setText(tr("---"))
@hh=@vv+1
@ggg=1
elsif @ggg==1 then
@mrbtLbl4.setText(tr(@hnbn[@hh]))
@bb=@vv+1
@ggg=2
elsif @ggg==2 then
@mrbtLbl4.setText(tr(@hnbn[@bb]))
@hh=@vv+1
@ggg=1
end
elsif @nnn==0 then
@mrbtbtn3.setEnabled(true)
@nnn=1
end
else
@mrbtbtn3.setEnabled(true) if @hjmt!=0
if @zzz==0 then
@bng2=@bngu+1
QSound::playFile("/home/QtPalmtop/sounds/xylophone.wav")
@mrbtLbl2.setText(tr("問題"+(@bngu/2).to_s))
@mrbtLbl4.setText(tr(@hnbn[@bng2-2])) if @hnbn[@bng2-2]!=nil
@mrbtLbl4.setText(tr(@hnbn[@bng2-3])) if (@bngu==0 && @ggg==1)
end
@s=@bngu
if @kaist[@bngu]==nil
@mrbtbtn5.setEnabled(false)
else
@mrbtbtn5.setEnabled(true)
end
@image.load(@gzo[@bngu])
@image.update()
@mrbtLbl3.setText(tr(@hnbn[@bngu]))
if @zzz==1 then
@bngu+=2
if @bngu==@bnsu then
@mrbtLbl3.setText(tr("pekepon")) #何故表示しないかわからない
end
end
if @zzz==0 then
@bngu+=2
if @bnsu==@bngu then
@bngu=0
@ggg=1
end
@hjmt=1
end
@zzz=0
end
end
def kaisetu
dlg = KaisetuDialog.new(self, "解説",@kaist[@s])
res = dlg.exec()
end
def ymkm
@ggg=0;@bngu=0;iticunt=0;@hnbn=[];@yorn=[];@gzo=[];@kaist=[]
itifile=File::open($iii,"r")
while (!itifile.eof?)
buf=itifile.gets;@yorn[iticunt]=buf[0,1];f=buf.index("$");
if((d=buf.index("#"))==nil&&(f==nil))
@kaist[iticunt]=@gzo[iticunt]=nil
@hnbn[iticunt]=buf[2,buf.size-1]
else
if f==nil
@gzo[iticunt]=buf[(d+1)..(buf.rindex("#")-1)]
@kaist[iticunt]=nil;@hnbn[iticunt]=buf[2,d-2];
elsif d==nil
@gzo[iticunt]=nil
@kaist[iticunt]=buf[(f+1)..((buf.rindex("$"))-1)]
@hnbn[iticunt]=buf[2,f-2];
else
@gzo[iticunt]=buf[(d+1)..(buf.rindex("#")-1)]
@kaist[iticunt]=buf[(f+1)..((buf.rindex("$"))-1)];
@hnbn[iticunt]=buf[2,([f,d].min)-2]
end
end
iticunt+=1
end
itifile.close();@bnsu=@hnbn.length-1
end
end
class SntkDialog < QDialog
def initialize(parent, caption)
super(parent, "SntkDialog", true)
setCaption(tr(caption))
@seitou=0;@sousuu=0;@kakuritu=0;@www=0;tex= 0
@faa=[];@faa2=[];@gzo=[];@kaist=[];@faa3=[];ttt=-1
fs=File::open($ddd,"r")
while (!fs.eof?)
buf=fs.gets
@faa2[tex]=buf[0,1]
@faa[tex]=buf[2,buf.length-1]
@faa3[ttt+=1]=tex if @faa2[tex]=="Q"
tex+=1
end
fs.close()
@faa.size.times{|i|if @faa2[i]=="Q";
ff=@faa[i].index("$")
if((dd=@faa[i].index("#"))==nil&&(ff==nil))
@kaist[i]=@gzo[i]=nil;@faa[i]=@faa[i][1,@faa[i].size-1]
else
if ff==nil
@gzo[i]=@faa[i][(dd+1)..(@faa[i].rindex("#")-1)]
@kaist[i]=nil;@faa[i]=@faa[i][1,dd-2];
elsif dd==nil
@gzo[i]=nil;@kaist[i]=@faa[i][(ff+1)..((@faa[i].rindex("$"))-1)]
@faa[i]=@faa[i][1,ff-2];
else
@gzo[i]=@faa[i][(dd+1)..(@faa[i].rindex("#")-1)]
@kaist[i]=@faa[i][(ff+1)..((@faa[i].rindex("$"))-1)];
@faa[i]=@faa[i][1,([ff,dd].min)-2]
end; end; end}
if(@faa2[0]=="Q")
exitIcon=QPixmap.new(EXIT_XPM)
@dirLabel = QLabel.new(tr(""), self)
@dirLabel2 = QLabel.new(tr("選択問題"), self)
@dirLabel2w = QMultiLineEdit.new(self)
@dirLabel2w.setWrapColumnOrWidth(350)
@dirLabel2w.setWordWrap(2)
@dirLabel2w.setWrapPolicy(1)
@mbtn01=QPushButton.new(exitIcon,tr("終了(o)"),self)
@mbtn02=QPushButton.new(tr("次の問題(n)"),self)
connect(@mbtn01,QSIGNAL("clicked()"),self,'owari')
connect(@mbtn02,QSIGNAL("clicked()"),self,'aaaaa')
@mrbtbtn5=QPushButton.new(tr("解説"),self)
connect(@mrbtbtn5,QSIGNAL("clicked()"),self,'kaisetu')
@dirLabel.setGeometry(5, 2, 640, 480)
@dirLabel2.setGeometry(5, 8, 80, 35)
@mbtn01.setGeometry(95, 8, 150, 35)
@mbtn02.setGeometry(250, 8, 150, 35)
@mrbtbtn5.setGeometry(405, 8, 150, 35)
@dirLabel2w.setGeometry(5, 52, 385, 123)
@tokuten = QLabel.new(tr(@seitou.to_s+"/"+@sousuu.to_s+" 正答率:"+@kakuritu.to_s), self)
@tokuten.setFont QFont.new('Lcfont',12, QFont::Bold)
@tokuten.setGeometry(400,425,240,15)
@image=ImgWidget.new(self);
@image.setGeometry(400,52,240,370)
@image.load(nil);@image.update()
@sntk=[];@sbtn=[]
6.times{|i|@sntk[i]=QMultiLineEdit.new(self)
@sntk[i].setWrapColumnOrWidth(290)
@sntk[i].setWordWrap(2)
@sntk[i].setWrapPolicy(1)
@sbtn[i]=QPushButton.new(tr(%w[q w e r t y][i]),self)
@sbtn[i].setGeometry(5, [185,228,271,314,357,400][i], 50, 40)
@sntk[i].setGeometry(60, [185,228,271,314,357,400][i], 330, 40)
connect(@sbtn[i],QSIGNAL("clicked()"), self,%w[k0 k1 k2 k3 k4 k5][i])}
@uuu=6
aaaaa()
else
@mrbtLbl1 = QLabel.new(tr("選択問題の書式が違います!"), self)
@mrbtLbl2 = QLabel.new(tr("確認をしてください"), self)
@mrbtLbl1.setGeometry(5, 2, 300, 40)
@mrbtLbl2.setGeometry(5, 42, 300, 30)
end
end
def kaisetu
if $sntk==0
dlg = KaisetuDialog.new(self, "解説",@kaist[@w])
else
dlg = KaisetuDialog.new(self, "解説",@kaist[@faa3[@v]])
end
res = dlg.exec()
end
def aaaaa
if @sousuu>0
@kakuritu=(@seitou.to_f/@sousuu.to_f)*100
@tokuten.setText(tr(@seitou.to_s+"/"+@sousuu.to_s+" 正答率:"+@kakuritu.to_s[0,4]))
end
@sousuu+=1
if $sntk==0
@www=0 if @www==@faa.length-1
if @faa[@www].size>120;
@dirLabel2w.setFont QFont.new('Lcfont',16, QFont::Bold);
@dirLabel2w.setText(tr(@faa[@www]))
else
@dirLabel2w.setFont QFont.new('Lcfont',22, QFont::Bold);
@dirLabel2w.setText(tr(@faa[@www]))
end
@sntk[2].setText(tr(""));@sntk[3].setText(tr(""))
@sntk[4].setText(tr(""));@sntk[5].setText(tr(""))
@sbtn[2].setEnabled(false);@sbtn[3].setEnabled(false)
@sbtn[4].setEnabled(false);@sbtn[5].setEnabled(false)
@image.load(@gzo[@www]);@image.update()
@w=@www
if @kaist[@www]==nil
@mrbtbtn5.setEnabled(false)
else
@mrbtbtn5.setEnabled(true)
end
@nm=[];@www+=1;ss=0
while (@faa2[@www]!="Q")
@nm[ss]=@faa[@www]
@www+=1; ss+=1
end
else
@v=rand(@faa3.length-1)
if @faa[@faa3[@v]].size>120;
@dirLabel2w.setFont QFont.new('Lcfont',16, QFont::Bold);
@dirLabel2w.setText(tr(@faa[@faa3[@v]]))
else
@dirLabel2w.setFont QFont.new('Lcfont',22, QFont::Bold);
@dirLabel2w.setText(tr(@faa[@faa3[@v]]))
end
@sntk[2].setText(tr(""));@sntk[3].setText(tr(""))
@sntk[4].setText(tr(""));@sntk[5].setText(tr(""))
@sbtn[2].setEnabled(false);@sbtn[3].setEnabled(false)
@sbtn[4].setEnabled(false);@sbtn[5].setEnabled(false)
if @kaist[@faa3[@v]]==nil
@mrbtbtn5.setEnabled(false)
else
@mrbtbtn5.setEnabled(true)
end
@image.load(@gzo[@faa3[@v]]);@image.update()
jjj=@faa3[@v+1]-@faa3[@v]-2
@nm=[]
zzz=@faa3[@v]
for u in 0..jjj
@nm[u]=@faa[zzz+=1]
end
ss=jjj+1
end
@ml=@nm[0]
for hh in 0..10
nn=@nm[n1=rand(ss)]
@nm[n1]=@nm[n2=rand(ss)]
@nm[n2]=nn
end
for kk in 0..ss-1
if @nm[kk].size>32;
@sntk[kk].setFont QFont.new('Lcfont',12, QFont::Bold)
@sntk[kk].setText(tr(@nm[kk].gsub(/\n/,"")))
else
@sntk[kk].setFont QFont.new('Lcfont',22, QFont::Bold)
@sntk[kk].setText(tr(@nm[kk].gsub(/\n/,"")))
end
@sbtn[kk].setEnabled(true)
end
hantei=%w[miss miss miss miss miss miss]
if @nm[0]==@ml then
hantei[@uuu=0]="kteaws"
elsif @nm[1]==@ml then
hantei[@uuu=1]="kteaws"
elsif @nm[2]==@ml then
hantei[@uuu=2]="kteaws"
elsif @nm[3]==@ml then
hantei[@uuu=3]="kteaws"
elsif @nm[4]==@ml then
hantei[@uuu=4]="kteaws"
elsif @nm[5]==@ml then
hantei[@uuu=5]="kteaws"
end
@key = QAccel.new(self)
@key.connectItem(@key.insertItem(Qt::Key_Q), self, hantei[0])
@key.connectItem(@key.insertItem(Qt::Key_W), self, hantei[1])
@key.connectItem(@key.insertItem(Qt::Key_E), self, hantei[2])
@key.connectItem(@key.insertItem(Qt::Key_R), self, hantei[3])
@key.connectItem(@key.insertItem(Qt::Key_T), self, hantei[4])
@key.connectItem(@key.insertItem(Qt::Key_Y), self, hantei[5])
@key.connectItem(@key.insertItem(Qt::Key_O), self, 'owari')
@key.connectItem(@key.insertItem(Qt::Key_N), self, 'aaaaa')
end
def k0;@uuu==0?kteaws():miss();end
def k1;@uuu==1?kteaws():miss();end
def k2;@uuu==2?kteaws():miss();end
def k3;@uuu==3?kteaws():miss();end
def k4;@uuu==4?kteaws():miss();end
def k5;@uuu==5?kteaws():miss();end
def miss
@sousuu+=1
QSound::playFile("/home/QtPalmtop/sounds/shtr.wav")
@kakuritu=(@seitou.to_f/@sousuu.to_f)*100
@tokuten.setText(tr(@seitou.to_s+"/"+@sousuu.to_s+" 正答率:"+@kakuritu.to_s[0,4]))
end
def kteaws
@seitou+=1
QSound::playFile("/home/QtPalmtop/sounds/xylophone.wav")
aaaaa()
end
def owari
close()
end
end
class MrbtDialog < QDialog
def initialize(parent, caption)
super(parent, "MrbtDialog", true)
ymkm()
@seitou=0;@sousuu=0;@kakuritu=0
setCaption(tr(caption))
if (@yorn[0]=="Y"||@yorn[0]=="N") then
exitIcon=QPixmap.new(EXIT_XPM)
@mrbtLbl1 = QLabel.new(tr(""), self)
@mrbtLbl2 = QLabel.new(tr("丸罰問題"), self)
@mrbtLbl3 = QMultiLineEdit.new(self)
@mrbtLbl3.setWrapColumnOrWidth(350)
@mrbtLbl3.setWordWrap(2)
@mrbtLbl3.setWrapPolicy(1)
@mrbtbtn1=QPushButton.new(exitIcon,tr("終了する"),self)
@mrbtbtn2=QPushButton.new(tr("次の問題へ"),self)
@mrbtbtn3=QPushButton.new(tr("○ (o)"),self)
@mrbtbtn4=QPushButton.new(tr("× (k)"),self)
@mrbtbtn5=QPushButton.new(tr("解説"),self)
connect(@mrbtbtn1,QSIGNAL("clicked()"),self,'mrbtowari')
connect(@mrbtbtn2,QSIGNAL("clicked()"),self,'mrtrnm')
connect(@mrbtbtn3,QSIGNAL("clicked()"),self,'mrbtmaru')
connect(@mrbtbtn4,QSIGNAL("clicked()"),self,'mrbtbatu')
connect(@mrbtbtn5,QSIGNAL("clicked()"),self,'kaisetu')
@tokuten = QLabel.new(tr(@seitou.to_s+"/"+@sousuu.to_s+" 正答率:"+@kakuritu.to_s), self)
@tokuten.setFont QFont.new('Lcfont',12, QFont::Bold)
@tokuten.setGeometry(5,425,210,15)
@image=ImgWidget.new(self);
@image.setGeometry(0,52,240,370)
@image.load(nil);@image.update()
@key = QAccel.new(self)
@key.connectItem(@key.insertItem(Qt::Key_O), self, 'mrbtmaru')
@key.connectItem(@key.insertItem(Qt::Key_K), self, 'mrbtbatu')
@mrbtLbl1.setGeometry(5, 2, 640, 480)
@mrbtLbl2.setGeometry(5, 8, 150, 35)
@mrbtbtn1.setGeometry(160, 8, 150, 35)
@mrbtbtn2.setGeometry(315, 8, 150, 35)
@mrbtbtn5.setGeometry(470, 8, 150, 35)
@mrbtLbl3.setGeometry(240, 52, 400, 340)
@mrbtbtn3.setGeometry(240, 400, 190, 35)
@mrbtbtn4.setGeometry(435, 400, 190, 35)
mrtrnm()
elsif (@yorn[0]!="Y") then
if (@yorn[0]!="N") then
@mrbtLbl1 = QLabel.new(tr("○×問題の書式が違います!"), self)
@mrbtLbl2 = QLabel.new(tr("確認をしてください"), self)
@mrbtLbl1.setGeometry(5, 2, 300, 40)
@mrbtLbl2.setGeometry(5, 42, 300, 30)
end
elsif (@yorn[0]!="N") then
if (@yorn[0]!="Y") then
@mrbtLbl1 = QLabel.new(tr("○×問題の書式が違います!"), self)
@mrbtLbl2 = QLabel.new(tr("確認をしてください"), self)
@mrbtLbl1.setGeometry(5, 2, 300, 40)
@mrbtLbl2.setGeometry(5, 42, 300, 30)
end
end
end
def kaisetu
dlg = KaisetuDialog.new(self, "解説",@kaist[@cc])
res = dlg.exec()
end
def mrbtowari;close();end
def mrtrnm
if @sousuu>0
@kakuritu=(@seitou.to_f/@sousuu.to_f)*100
@tokuten.setText(tr(@seitou.to_s+"/"+@sousuu.to_s+" 正答率:"+@kakuritu.to_s[0,4]))
end
@sousuu+=1
QSound::playFile("/home/QtPalmtop/sounds/xylophone.wav")
if $mrbt==0
@cc=@bngu
@image.load(@gzo[@bngu]);@image.update()
@mrbtLbl3.setText(tr(@hnbn[@bngu]))
@mrbtLbl2.setText(tr("問題"+@bngu.to_s))
@bngu+=1;@bngu=0 if @bnsu==@bngu
else
@bngu=rand(@bnsu)
@mrbtLbl3.setText(tr(@hnbn[@bngu]))
@mrbtLbl2.setText(tr("問題"+@bngu.to_s))
@cc=@bngu
@image.load(@gzo[@bngu]);@image.update()
end
if @kaist[@cc]==nil
@mrbtbtn5.setEnabled(false)
else
@mrbtbtn5.setEnabled(true)
end
end
def mrbtmis
@sousuu+=1
@mrbtLbl2.setText(tr("間違ってます"))
QSound::playFile("/home/QtPalmtop/sounds/shtr.wav")
@kakuritu=(@seitou.to_f/@sousuu.to_f)*100
@tokuten.setText(tr(@seitou.to_s+"/"+@sousuu.to_s+" 正答率:"+@kakuritu.to_s[0,4]))
end
def mrbtmaru
if $mrbt==0
@yorn[@bngu-1]=="Y"?(@seitou+=1;mrtrnm()):mrbtmis()
else
@yorn[@bngu]=="Y"?(@seitou+=1;mrtrnm()):mrbtmis()
end
end
def mrbtbatu
if $mrbt==0
@yorn[@bngu-1]=="N"?(@seitou+=1;mrtrnm()):mrbtmis()
else
@yorn[@bngu]=="N"?(@seitou+=1;mrtrnm()):mrbtmis()
end
end
def ymkm
@bngu=0;mrbtcunt=0;@hnbn=[];@yorn=[];@gzo=[];@kaist=[]
mrbtfile=File::open($mmm,"r")
while (!mrbtfile.eof?)
buf=mrbtfile.gets;@yorn[mrbtcunt]=buf[0,1];ff=buf.index("$")
if((dd=buf.index("#"))==nil&&(ff==nil))
@kaist[mrbtcunt]=@gzo[mrbtcunt]=nil
@hnbn[mrbtcunt]=buf[2,buf.size-1]
else
if ff==nil
@gzo[mrbtcunt]=buf[(dd+1)..(buf.rindex("#")-1)]
@kaist[mrbtcunt]=nil;@hnbn[mrbtcunt]=buf[2,dd-2];
elsif dd==nil
@gzo[mrbtcunt]=nil
@kaist[mrbtcunt]=buf[(ff+1)..((buf.rindex("$"))-1)]
@hnbn[mrbtcunt]=buf[2,ff-2];
else
@gzo[mrbtcunt]=buf[(dd+1)..(buf.rindex("#")-1)]
@kaist[mrbtcunt]=buf[(ff+1)..((buf.rindex("$"))-1)];
@hnbn[mrbtcunt]=buf[2,([ff,dd].min)-2]
end
end
mrbtcunt+=1
end
mrbtfile.close()
@bnsu=@hnbn.length-1
end
end
class KaisetuDialog < QDialog
def initialize(parent,caption,a)
super(parent, "KaisetuDialog", true)
setCaption(tr("解説"))
k = QMultiLineEdit.new(self)
k.setWrapColumnOrWidth(340)
k.setWordWrap(2)
k.setWrapPolicy(1)
k.setGeometry(10,10,380,310)
k.setText(tr(a))
resize(400, 330)
end
end
class ImgWidget < QWidget
def initialize( parent )
super( parent )
catchEvent
end
def load( file )
@image = QImage.new( file )
end
def paintEvent( e )
@paint = QPainter.new( self )
@paint.drawImage( 0, 0, @image)
@paint.end
end
end
class MyApplication < QPEApplication
def initialize
super([$0]+ARGV)
self.setDefaultCodec(QTextCodec::codecForName("utf8"))
end
end
app=MyApplication.new
app.showMainWidget(MainWindow.new())
app.exec