♗ Bishop Number Quest

Choose your level and time, then help the glowing bishop collect numbers and reach the target exactly. The bishop moves diagonally — choose the smartest route.

Great Job!

You completed the challenge.

🏫 Live Class Challenge — Bishop Number Quest

Teacher creates a room. Students join, wait, then everyone starts together.

👩‍🏫 Teacher

🧒 Student

School Race Mode: students enter name + room code, then wait for the teacher. Demo mode works across tabs in the same browser. Online play from different devices needs Supabase/Firebase later.

🏫 Bishop Number Quest — Class Results

⏰ Time: 03:00
⭐ Stars: 0/30
❓ Question: 1/10
🪙 Bonus Coins: 0
🎮 Level:
⏳ Duration:
Bishop Number Quest
Press Start
Current Sum0
Moves0
Best-
Solved0
Collect the target number with the fewest legal bishop lines.
How to play
The bishop may stop on any legal square, empty or numbered. Every move counts, but only numbered squares add points to your total. The bishop moves horizontally or vertically and cannot jump over numbers.

👦 Student Profile

📖 Championship Rules

Ranking System

For every round and for the final championship result, players are ranked by:

Tie Rule

Players share the same rank only if Stars, Questions Solved, and Time Used are all equal.

Medals

Shared Medals

1, 1, 3 → Gold, Gold, Bronze. No Silver.

1, 2, 2, 4 → Gold, Silver, Silver. No Bronze.

1, 2, 3, 3, 3 → Gold, Silver, Bronze, Bronze, Bronze.

Official Results

Round certificates and medals become official only after the teacher closes the round by pressing Save Round Results.

'); w.document.close(); w.focus(); setTimeout(function(){w.print();},350); } window.printTeacherReport=function(){ var card=by('teacherReportPrint'); if(!card){alert('No report is open.');return;} var h=card.querySelector('h2'); var title=h?(h.textContent||'Report'):'Report'; var summary=by('reportSummary')?by('reportSummary').innerHTML:''; var table=by('reportTableBox')?by('reportTableBox').innerHTML:''; printHtmlDocument(title,'

'+esc(title)+'

'+summary+table); }; window.showTeacherReport=function(){ var r=getRoom(); if(!r)return alert('No active room.'); var key=currentRoundKey(r), arr=roundRows(r,key); if(!arr.length)return alert('No results found for this round yet.'); var avg=(arr.reduce(function(a,p){return a+n(p.stars)},0)/arr.length).toFixed(1); var leader=arr.filter(function(p){return p.rank===1}).map(function(p){return p.name}).join(' & ')||'-'; var fast=arr.slice().sort(function(a,b){return n(a.time,999999)-n(b.time,999999)})[0]; var rows=arr.map(function(p){return ''+p.rank+(p.tie?' (Tie)':'')+''+esc(p.age||'-')+''+esc(p.grade||'-')+''+esc(p.school||'-')+''+esc(p.status||'-')+''+p.stars+'/30'+p.solved+'/10'+fmt(p.time)+''+award(p.rank,false)+'';}).join(''); setReport('🖨️ Current Round Report','
👥 Participants
'+arr.length+'
⭐ Average Stars
'+avg+'/30
🏆 Round Leader
'+esc(leader)+'
⚡ Fastest
'+(fast?esc(fast.name):'-')+'
'+esc(r.title||'Level Championship')+'   Room: '+esc(r.code||activeRoomCode())+'   '+esc((arr[0]&&arr[0].label)||roundName(key))+'   Date: '+new Date().toLocaleDateString()+'
Click a student name to print the round certificate.
',''+rows+'
RankStudentAgeClassSchoolStatusStarsSolvedTime UsedAward
'); }; window.showFinalRanking=function(){ var r=getRoom(); if(!r)return alert('No active room.'); var arr=finalRows(r); if(!arr.length)return alert('Please save at least one round first.'); var rows=arr.map(function(p){return ''+p.rank+(p.tie?' (Tie)':'')+''+esc(p.age||'-')+''+esc(p.grade||'-')+''+esc(p.school||'-')+''+p.totalStars+''+p.totalSolved+''+fmt(p.totalTime)+''+award(p.rank,true)+'';}).join(''); setReport('🏆 Final Championship Ranking','
🥇 Champion
'+esc(arr.filter(p=>p.rank===1).map(p=>p.name).join(" & "))+'
🥈 Rank 2
'+esc(arr.filter(p=>p.rank===2).map(p=>p.name).join(" & ")||"-")+'
🥉 Rank 3
'+esc(arr.filter(p=>p.rank===3).map(p=>p.name).join(" & ")||"-")+'
👥 Players
'+arr.length+'
'+esc(r.title||'Level Championship')+'   Room: '+esc(r.code||activeRoomCode())+'   Completed Rounds: '+allSavedRoundKeys(r).length+' of 3
Final Ranking Rule: Total Stars → Total Solved → Lowest Total Time. Click the student name to print certificate.
',''+rows+'
RankStudentAgeClassSchoolTotal StarsTotal SolvedTotal TimeAwardCertificate
'); }; window.showTopPlayersV40=function(limit){ var r=getRoom(); if(!r)return alert('No active room.'); if(!limit){var x=prompt('Show Top how many? Write 10, 20, or ALL','10'); if(!x)return; limit=String(x).toLowerCase()==='all'?0:Number(x)||10;} var arr=finalRows(r); if(limit)arr=arr.slice(0,limit); var rows=arr.map(function(p){return ''+p.rank+(p.tie?' (Tie)':'')+''+esc(p.studentCode||p.id)+''+esc(p.name)+''+esc(p.school||'-')+''+p.totalStars+''+p.totalSolved+''+fmt(p.totalTime)+''+award(p.rank,true)+'';}).join(''); setReport('🏅 Top Players','
🏅 Showing
'+(limit?('Top '+limit):'All Players')+'
👥 Total Participants
'+finalRows(r).length+'
⭐ Rule
Stars → Solved → Time
🏆 Leader
'+esc((finalRows(r)[0]&&finalRows(r)[0].name)||'-')+'
'+esc(r.title||'Level Championship')+'   Room: '+esc(r.code||activeRoomCode())+'
',''+rows+'
RankPlayer IDStudentSchoolTotal StarsTotal SolvedTotal TimeAward
'); }; window.showChampionshipDetails=function(){ var r=getRoom(); if(!r)return alert('No active room.'); var keys=allSavedRoundKeys(r); if(!keys.length)return alert('Please save at least one round first.'); var arr=finalRows(r); var head=keys.map(function(k){return ''+esc((r.rounds[k]&&r.rounds[k].label)||roundName(k))+'';}).join(''); var rows=arr.map(function(p){ var cells=keys.map(function(k){ var rr=p.rounds.find(function(x){return x.label===((r.rounds[k]&&r.rounds[k].label)||roundName(k))}) || p.rounds[roundNum(k)-1]; return ''+(rr?(rr.stars+'/30
'+rr.solved+'/10 • '+fmt(rr.time)+''):'Absent')+''; }).join(''); return ''+p.rank+(p.tie?' (Tie)':'')+''+esc(p.name)+''+esc(p.age||'-')+''+esc(p.grade||'-')+''+esc(p.school||'-')+''+cells+''+p.totalStars+''+p.totalSolved+''+fmt(p.totalTime)+''; }).join(''); setReport('📊 Championship Details','
👥 Players
'+arr.length+'
🔁 Rounds Saved
'+keys.length+'
🏆 Champion
'+esc((arr[0]&&arr[0].name)||'-')+'
📅 Date
'+new Date().toLocaleDateString()+'
'+esc(r.title||'Level Championship')+'   Room: '+esc(r.code||activeRoomCode())+'
',''+head+''+rows+'
Final RankStudentAgeClassSchoolTotal StarsTotal SolvedTotal Time
'); }; })(); ');w.document.close();w.focus();setTimeout(function(){w.print()},350); } window.printTeacherReport=function(){ var card=by('teacherReportPrint'); if(!card)return alert('No report is open.'); var h=card.querySelector('h2'), title=h?(h.textContent||'Report'):'Report'; var summary=by('reportSummary')?cleanForPrint(by('reportSummary').innerHTML):''; var table=by('reportTableBox')?cleanForPrint(by('reportTableBox').innerHTML):''; printHtmlDocument(title,'

'+esc(title)+'

'+summary+table); }; window.showTeacherReport=function(){ var r=getRoom(); if(!r)return alert('No active room.'); var key=selectedKey(), arr=savedRoundRows(r,key); if(!arr.length)return alert(roundName(key)+' has not been saved yet.\nPlease save the round results first.'); var avg=(arr.reduce(function(a,p){return a+n(p.stars)},0)/arr.length).toFixed(1); var leader=arr.filter(function(p){return p.rank===1}).map(function(p){return p.name}).join(' & ')||'-'; var fast=arr.slice().sort(function(a,b){return n(a.time,999999)-n(b.time,999999)})[0]; var rows=arr.map(function(p){return ''+p.rank+(p.tie?' (Tie)':'')+''+esc(p.age||'-')+''+esc(p.grade||'-')+''+esc(p.school||'-')+''+esc(p.status||'-')+''+p.stars+'/30'+p.solved+'/10'+fmt(p.time)+''+award(p.rank,false)+''}).join(''); setReport('🖨️ Current Round Report','
👥 Participants
'+arr.length+'
⭐ Average Stars
'+avg+'/30
🏆 Round Leader
'+esc(leader)+'
⚡ Fastest
'+(fast?esc(fast.name):'-')+'
'+esc(r.title||'Level Championship')+'   Room: '+esc(r.code||activeCode())+'   '+esc((arr[0]&&arr[0].label)||roundName(key))+'   Date: '+new Date().toLocaleDateString()+'
Click a student name to print the round certificate.
',''+rows+'
RankStudentAgeClassSchoolStatusStarsSolvedTime UsedAward
'); }; window.showFinalRanking=function(){ var r=getRoom(); if(!r)return alert('No active room.'); var arr=finalRows(r); if(!arr.length)return alert('Please save at least one round first.'); var rows=arr.map(function(p){return ''+p.rank+(p.tie?' (Tie)':'')+''+esc(p.age||'-')+''+esc(p.grade||'-')+''+esc(p.school||'-')+''+p.totalStars+''+p.totalSolved+''+fmt(p.totalTime)+''+award(p.rank,true)+''}).join(''); setReport('🏆 Final Championship Ranking','
🥇 Champion
'+esc(arr.filter(function(p){return p.rank===1}).map(function(p){return p.name}).join(' & '))+'
🥈 Rank 2
'+esc(arr.filter(function(p){return p.rank===2}).map(function(p){return p.name}).join(' & ')||'-')+'
🥉 Rank 3
'+esc(arr.filter(function(p){return p.rank===3}).map(function(p){return p.name}).join(' & ')||'-')+'
👥 Players
'+arr.length+'
'+esc(r.title||'Level Championship')+'   Room: '+esc(r.code||activeCode())+'   Completed Rounds: '+allSavedRoundKeys(r).length+' of 3
Final Ranking Rule: Total Stars → Total Solved → Lowest Total Time. Click the student name to print certificate.
',''+rows+'
RankStudentAgeClassSchoolTotal StarsTotal SolvedTotal TimeAwardCertificate
'); }; var oldLiveStart=window.liveStartChallenge; window.liveStartChallenge=function(){ var r=getRoom(), key=selectedKey(), rn=roundNum(key); if(rn>1){ var prev='R'+(rn-1); if(!r || !r.rounds || !r.rounds[prev] || !Array.isArray(r.rounds[prev].results) || !r.rounds[prev].results.length){ return alert('Please save Round '+(rn-1)+' results before starting Round '+rn+'.'); } } return oldLiveStart.apply(this,arguments); }; })();