#!/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