एक साइमन क्लोन बनाएँ! [बन्द है]


18

परिदृश्य: प्रोग्रामिंग करते समय आपके पास '80 के दशक और लजीला खेल के लिए एक उदासीन आग्रह है।

आवश्यकताएँ: साइमन, खेल के लिए एक जीयूआई कार्यक्रम (शायद काम नहीं करेगा) बनाओ। इनपुट पर क्लिक किया जा सकता है, या कुंजी दबाया जा सकता है। आपको स्क्रीन को 4 क्षेत्रों में विभाजित करना चाहिए: पीला, नीला, लाल, हरा। जब खेल शुरू होता है, तो एक यादृच्छिक रंग प्रकाश होता है और आप इसे सक्रिय करते हैं। फिर, दो रोशनी आती हैं, एक के बाद एक, और आपको उन लोगों को सक्रिय करने की आवश्यकता है, आदि जब आप गलत रंग दबाते हैं तो खेल समाप्त हो जाता है।

बोनस:

-100 यदि आप ध्वनि शामिल करते हैं (प्रत्येक क्षेत्र को दबाने पर खेला जाने वाला एक अलग नोट और जब खेल आपको रंग दिखाता है)

-25 यदि आप एक स्कोर काउंटर शामिल करते हैं।


13
जीयूआई और कोड-गोल्फ आमतौर पर एक साथ काम नहीं करते हैं।
user80551

3
यह Minecraft में उल्लेखनीय होना चाहिए। अगर किसी के पास पहले से ही है तो मुझे आश्चर्य नहीं होगा। पता नहीं कैसे एक है कि यहाँ प्रस्तुत करना होगा ...
10

@ ब्लॉक की राशि को ब्लॉक करें * बाइट्स प्रति ब्लॉक;)
लियाम मैकइनरॉय

@Liam McInroy AFAIK एक ब्लॉक ब्लॉक आईडी के लिए 2 बाइट्स है और दुनिया में इसकी स्थिति को स्टोर करने के लिए 4 बाइट्स हैं।
पावेल

जवाबों:


12

बैश 318 297 281 273 268 244 240-125 = 115

यह मुख्य रूप से "पाठ शायद काम नहीं करेगा" की प्रतिक्रिया है; निम्नलिखित पाठ आधारित बैश लिपि में ठीक चलाता है Konsole, gnome-terminalमेरे Ubuntu 14.04 मशीन पर आदि। रंग के क्षेत्र बनाने के लिए यह पाठ पृष्ठभूमि रंग सेट करता है। वास्तव में, पाठ जोड़ने से खेल को रंग-अंधा खिलाड़ियों के लिए अधिक सुलभ हो जाता है। खेल को और अधिक सुलभ बनाने के लिए यह उन पात्रों को पढ़ता है जिन्हें खिलाड़ी को दबाने की जरूरत है (यह मानता है कि espeakस्थापित है)। यह भी मानता है कि केवल फ़ाइल मिलान /d*/ur*/है /dev/urandom। गैर-तुच्छ आकार के रंग के क्षेत्रों के लिए आप शायद पाठ का आकार काफी बड़ा करना चाहते हैं। यदि आप चाहते हैं कि रंग के क्षेत्र चतुष्कोण हों, तो आपको इसे एक ऐसे टर्मिनल में चलाना होगा जो दो वर्णों वाला हो।

प्रेस y, r, g या b को उपयुक्त के रूप में खेलने के लिए।

cat <<"EOF"|sed s/E/`echo -e '\E'`/>simon_golf.sh;bash simon_golf.sh;wc simon_golf.sh
d(){ echo Ecx1r09mRx2g10mGx3y11mYx4b14mBx0m$s|sed s/.$1"//
s/[rgyb]..//g
s/x/E[48;5;/g";};x(){ d $c;espeak $c;d j;};l(){
for c in $o;{ eval $1;x;};};f(){ o=$o\ `tr -dc yrgb</d*/ur*|head -c1`
l;l 'read -n1 i;[ $c = $i ]||exit;let s++';f;};f
EOF

इस समाधान में दो गैर-मुद्रण योग्य ESC वर्ण हैं। हालाँकि ये ESC कैरेक्टर पूर्वावलोकन में दिखाई देते हैं, लेकिन ये सबमिशन के बाद डिलीट हो जाते हैं, इसलिए ऊपर दिया गया कोड एक रैपर है जो गोल्फ को जनरेट और रन करता है simon_golf.sh

मूल ungolfed संस्करण भी देखें , और थोड़ा अधिक बजाने वाला 256 बाइट संस्करण

नीचे दिए गए स्क्रीनशॉट में पीली रोशनी चालू है और खिलाड़ी का स्कोर 7 है। दाईं ओर का स्क्रीनशॉट रंग-अंधत्व का अनुकरण करने के लिए उजाड़ दिया गया है।

स्क्रीनशॉटकाला और सफेद


एक कोड गोल्फ के लिए बहुत बड़ा रास्ता ...
जॉन ड्वोरक

3
सच। मैं यहाँ "कोडिंग गोल्फ" से अधिक "प्रोग्रामिंग पज़ल्स" के लिए हूँ।
गमथ

मैंने अब इसे थोड़ा गोल्फ दिया है।
gmatht

24

स्क्रैच, 1604 - 125 = 1479

मैं यहाँ मज़े के लिए हूँ, गोल्फ के लिए नहीं।

संपादित करें: समुदाय की सहमति के आधार पर अद्यतन स्कोरिंग विधि ।

मुख्य कार्यक्रम:

मुख्य

व्यक्तिगत स्प्राइट्स:

प्रेत

यह संख्या के साथ स्प्राइट है 0। अन्य स्प्राइट्स की संख्या के अलावा एक ही स्क्रिप्ट है।

इसके साथ ऑनलाइन खेलें ।

बाइट की गिनती के लिए इस्तेमाल किया जाने वाला कोड: (कोड छिपाने के लिए स्निपेट का उपयोग करना)

नोट: कोड स्वचालित रूप से किसी भी जनरेटर के दशमलव संख्या को सही ढंग से नहीं संभालता (0.3 के रूप में 0 का इलाज) के रूप में संशोधित, स्क्रैचब्लॉक्स जनरेटर का उपयोग करके उत्पन्न होता है ।

स्क्रीनशॉट:

स्क्रीनशॉट

नोट: कृपया 0.3 सेकंड के भीतर दो बटन न दबाएं।


हा, यह अच्छा है। एक सही उत्तर के बाद एक विराम अच्छा होगा, हालांकि, या कुछ बधाई ध्वनि। ऐसा लगता है कि मेरी आखिरी चाल पैटर्न का हिस्सा है। इसके अलावा, मैं इनपुट कैप की तुलना में ध्वनियों को अधिक धीमी गति से बजाऊंगा, क्योंकि ताल और टोन का मेल होता है कि कैसे लोग (अपने आप को, कम से कम) खेलते हैं ... फिर भी, मुझे यह पसंद है। +1
krs013

1
स्क्रैच? एसआरएस? इसके अलावा, बाइट काउंट इमो एसबी 2 का कुल आकार होना चाहिए।
cjfaure

1
@ फिर यह 126833 बाइट्स (wav साउंड फाइल्स आदि सहित) होगा, यही वजह है कि मैंने कहा "मैं यहाँ मज़े के लिए हूँ, गोल्फ के लिए नहीं।"
user12205

स्कोरिंग मैं सुझाव के अनुसार यहाँ , स्कोर 60 (27 ब्लॉक, 20 वर्ण / अंक स्थिरांक में, 8 ऑपरेटर, 5 चर का उपयोग करता है) है। बोनस के साथ, आपको -65 मिलता है।
बदसूरत

@ यूगोरेन यह वास्तव में केवल एक आंशिक उत्तर है। 4 स्प्राइट हैं, और केवल एक के लिए स्क्रिप्ट दिखाई गई है, क्योंकि दूसरे स्प्राइट में संख्या को छोड़कर लगभग समान स्क्रिप्ट हैं। मैं आपके स्कोरिंग के आधार पर उत्तर को अपडेट करूंगा। धन्यवाद।
user12205

3

गणितज्ञ, ४० ९ - १२५ = २atic४

k = 2;
p = Tuples[{0, 1}, 2];
f[c_, p_] := 
 EventHandler[{c, Rectangle[p]}, 
  "MouseClicked" :> (AppendTo[x, p]; Beep[]; g)]
h[R_] := (i = 1; 
  RunScheduledTask[
   H = If[OddQ@i, 
     Beep[]; {EdgeForm[{Thickness[0.02], Black}], FaceForm[], 
      Rectangle@R[[Ceiling[i/2]]]}, {}]; i++, {.3, 2 Length@R}])
s := (m = 0; x = {}; h[R = RandomChoice[p, k]];)
g := (m++; If[Take[R, m] != x, k = 2; s, If[m == k, k++; s]])
Dynamic@Graphics[{MapThread[f, {{Yellow, Red, Blue, Green}, p}], H}, 
  PlotLabel -> k]
s

यहाँ छवि विवरण दर्ज करें


2

विंडोज पॉवरशेल (सीएलआई), २ --२ - १०० - २५ = १४hell

$d={param($c)cls;sleep -m 99;'R','Y','Blu','Gre'|
%{Write-Host '#' -N -F "$(if($i%4-ne $c){'Dark'})$_";
$i++}};$b={param($c)&$d $c;[console]::Beep(($c+1)*99,700);&$d};
$m=@();$s=0;for(){$m+=0..3|Get-Random;$m|%{&$b $_};$m|%{
if((read-host)-ne $_){$s;exit}&$b $_};$s++;sleep 1}

मैंने साइड-स्क्रॉलिंग से बचने के लिए यहां नई कड़ियों को जोड़ा है, लेकिन यह एक लाइन के रूप में काम करती है इसलिए कैरेक्टर काउंट बिना न्यूलाइन्स के है।

स्क्रीनशॉट: गेम खेलने का स्क्रीनशॉट

क्रीड़ा करना:

  • PowerShell ISE (v3) खोलें, स्क्रिप्ट को टेक्स्ट एडिटर में पेस्ट करें, चलाने के लिए F5 दबाएं।
  • गेम एक रंग को रोशन करेगा, एक ध्वनि बजाएगा, फिर इनपुट की प्रतीक्षा करें
  • एक नंबर (0 = लाल, 1 = पीला, 2 = नीला, 3 = हरा) दबाएँ फिर एंटर करें।
  • यदि आप गलत हैं तो यह स्कोर प्रिंट करता है और क्विट करता है। (एनबी। यह आपके कंसोल से बाहर निकल सकता है)।
  • यदि आप सही हैं तो यह दो नोटों के लिए जाता है।
  • सीक्वेंस वापस खेलते समय आपको प्रत्येक नोट के बीच एंटर दबाना होगा।

टिप्पणियाँ:

  • "स्क्रीन को 4 क्षेत्रों में विभाजित करें" - आपने नहीं कहा कि उन्हें क्वार्टर बनना था, इसलिए वे नहीं हैं।
  • नीले रंग की पृष्ठभूमि पर नीले प्रकाश को देखना कठिन है, लेकिन यह करता है।
  • कृपया PowerShell ISE में चलाएं - सामान्य प्रॉम्प्ट "डार्कयेलो" में सफेद रंग के रूप में दिखाया गया है।
  • आप यकीनन एक और 28 पात्रों को कुछ समय निकाल कर (अभी भी खेल को खेलने योग्य बना सकते हैं) बंद कर सकते हैं, और नियम की व्याख्या करके "ध्वनि (दबाए जाने पर एक नोट खेला जाता है और जब खेल आपको रंग दिखाता है)" का अर्थ है "वे कर सकते हैं सभी एक ही ध्वनि हो - डिफ़ॉल्ट त्रुटि डिंग ", लेकिन मुझे लगता है कि इसकी भावना के खिलाफ बहुत दूर है।

0

ZXBasic: 422 - 100 - 25 = 297

यह निश्चित रूप से '80 के दशक के लिए एक उदासीन आग्रह के रूप में गिना जाता है ...

ZXBasic FreeBASIC प्रकार के कमांड और ZX स्पेक्ट्रम बेसिक के संयोजन का उपयोग करता है ताकि लूप्स और दोहराए जा सकें जो तब स्पेक्ट्रम इम्यूलेटर में लोड करने के लिए TZX प्रारूप में बदल जाते हैं।

यह संस्करण सीमा बदलता है (हालांकि स्क्रीन पर एक किंवदंती कहती है कि किस कुंजी को दबाएं)। यह मूल साइमन गेम ( http://en.wikipedia.org/wiki/Simon_%28game%29 ) के समान नोट्स खेलता है ।

d=0.5:s=0:l=1:t=1:n$="4261":dim m(4)=>{-8,9,1,4}
border 7
while l>0
 cls:a$="":print at 1,1;"Level: ";t;at 2,1;"Score:";s::for i=1 to 4:print at 0,i;paper val(n$(i));ink 0;i:next
 for i=1 to t
  c=1+int(rnd*4)
  border val(n$(c)):beep d,m(c):border 7
  a$=a$+str(c)
 next
 print at 10,1;"your turn"
 p$="":i=1
 do
  pause 100:k$=inkey:print at 6,i;k$
  if k$=a$(i) then s=s+1:print at 2,7;s:beep d,m(val(k$)):i=i+1
  else l=l-1:i=t+1:print "bad luck!"
  end if
 loop until i>t 
 t=t+1:pause 25
end while

सर्वश्रेष्ठ अंक खेल में


0

HTML5 और जावास्क्रिप्ट, 1118-100-25 = 993 बाइट्स

यहाँ छवि विवरण दर्ज करें

जिस तरह से HTML + Js संस्करण भी फूला हुआ है।

वेब ऑडियो एपीआई के माध्यम से लगता है

नोटों की फ्रीक्वेंसी मूल साइमन की होनी चाहिए, रंग और रंग प्लेसमेंट भी।

यहां एक ऑनलाइन डेमो है: http://www.dantonag.it/miniSimon.html । वेब ऑडियो अनुरूप ब्राउज़रों में काम करता है (कम से कम क्रोम और फ़ायरफ़ॉक्स, IE इसका समर्थन नहीं करता है, AFAIK)।

<html><script>
var hc=["#0f0","red","#ff3","blue"],lc=["#090","#930","#cc0","#33c"],nt=[391,329,261,195],ln=[],qpos=0,pm=0,x,ct=new AudioContext;function ps(a,d){var b=ct.createOscillator();b.frequency.value=d;b.connect(ct.destination);var c=ct.createGain();b.connect(c);c.connect(ct.destination);c.gain.value=-.5;x[a].style.backgroundColor=hc[a];b.start(0);setTimeout(function(a,b){a.stop(0);x[b].style.backgroundColor=lc[b]},500,b,a)}
function w(a){2==pm&&(a!=ln[qpos]?(pm=3,document.getElementsByTagName("span")[0].innerHTML="game over!",ps(a,156)):(qpos++,ps(a,nt[a]),qpos>=ln.length&&(pm=qpos=0)))}function ml(){if(0==pm)document.getElementsByTagName("div")[0].innerHTML=ln.length,ln.push(Math.floor(4*Math.random())),pm=1;else if(1==pm){var a=ln[qpos];qpos<ln.length?(ps(a,nt[a]),qpos++):(qpos=0,pm=2)}setTimeout(ml,500)}window.onload=function(){setTimeout(ml,1);x=document.getElementsByTagName("td")};</script><div>0</div><table cellpadding=40><tr><td bgcolor=#090 onmousedown=w(0)><td bgcolor=#930 onmousedown=w(1)><tr><td bgcolor=#cc0 onmousedown=w(2)><td bgcolor=#33c onmousedown=w(3)></table><span></span>

मेरा रिकॉर्ड 15 है (मैं इस खेल में बहुत बुरा हूं)। आपका क्या है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.