Flappy पक्षी क्लोन :)


24

हर कोई उस बेवकूफ "फ्लैपी बर्ड" गेम को हटाने के बारे में गुस्सा निकाल रहा है। तो, अपने काम के लिए एक Flappy बर्ड क्लोन खेल टोकरा है। यह वास्तव में सरल है। यहाँ गाइड लाइन हैं:

  • यह या तो आस्की कला या वास्तविक चित्रों का उपयोग कर सकता है
  • आप एक क्लिक या एक कुंजी प्रेस के साथ अपने "पक्षी" फ्लैप बना सकते हैं
  • इसे यथासंभव छोटा करने की कोशिश करनी चाहिए, इसलिए टैग।

यहाँ एक उदाहरण है: http://www.reddit.com/r/learnprogramming/comments/1xiimx/i_couldnt_sleep_so_i_cloned_your_flappy_bird/

"Flappy बर्ड क्लोन" होने के लिए, आपके खेल में निम्नलिखित बातें होनी चाहिए:

  • एक पक्षी, या अन्य चरित्र
  • जब एक कुंजी दबाया जाता है तो "पक्षी" थोड़ा ऊपर जाना चाहिए या आप क्लिक / टैप करें
  • यदि कोई क्लिक / टैपिंग / आदि नहीं है, तो "पक्षी" तेजी से नीचे की ओर बढ़ना चाहिए
  • पाइप या अन्य बाधाओं को स्क्रीन पर बाईं ओर बढ़ना चाहिए, जिससे यह भ्रम पैदा हो कि पक्षी चल रहा है
  • पक्षियों के माध्यम से उड़ने के लिए पाइप में एक छोटा सा अंतर होना चाहिए।
  • जब भी आप पाइपों के बीच के अंतर से गुजरते हैं, आपका स्कोर 1 से बढ़ जाता है।
  • यदि आप एक पाइप या जमीन से टकराते हैं, तो खेल समाप्त होता है और आपका स्कोर प्रदर्शित होता है।

यह वास्तव में एक "पक्षी" या "पाइप" होने की आवश्यकता नहीं है, यह सभी आस्की हो सकता है। यहाँ एक फड़फड़ा पक्षी स्क्रीन का एक बहुत ही न्यूनतम उदाहरण है:

/ ----- [4] ----- \
| || || |
| || ¯¯ |
| || ओ> |
| | __ |
| __ || |
| || || |
\ ------------- /

2
एक प्रश्न को आदर्श रूप से स्व-निहित होना चाहिए, और निश्चित रूप से कम से कम एक व्यापक-ब्रश युक्ति होना चाहिए।
पीटर टेलर

3
जैसा कि यह खड़ा है, एक वैध प्रस्तुत करने में बहुत अधिक व्यक्तिपरकता दिखाई देती है
क्रंचर

2
क्या आप वहां मौजूद हैं। मैं कुछ
दिशाओं के

मैंने कुछ हफ़्ते पहले ऐसा किया था। हो सकता है कि जब मैं कुछ समय पाऊंगा
Shmiddty

1
मैं वास्तव में एक ASCII कला संस्करण देखना चाहता हूं !
रोबी विंसीज

जवाबों:


14

जावास्क्रिप्ट + jQuery (ASCII कला) - 571 524 491

नीचे दिए गए डेमो फंक्शनल बनाने के लिए देव टूल्स (F12) खोलें और इस पेज में निम्नलिखित कोड चलाएं (अभी, आगे बढ़ो!)।

l=$('#answer-23452 blockquote pre').click(function(){m=1}),o=[],d=0,e=4,m=1;setInterval(function(){t=Array(153);s=~~(d/10-0.99);d++;d%10?0:o[d+20]=~~(Math.random()*5)+1;for(i=-1;k=o[i+d],i<17;i++)if(k--)for(j=-1;c=j==k||j-k==4?'-':j-k>0&&j-k<4?0:'|',j<9;j++)i>-1?t[j*17+i]=c:0,i<16?t[j*17+i+1]=c:0;m-=.2;e-=m;if(e<0||e>10||t[~~e*17+8])e=4,m=1,d=0,o=[];t[~~e*17+8]='>';r='|-------['+s+']-------';for(i=0;z=t[i]||' ',i<153;i++)i%17?r+=z:r+='|\n|'+z;r+='|\n|-----------------|';l.html(r);},150)

डेमो (यह काम करो):

|-------[5]-------|
|    ||        -- |
|    ||           |
|    ||           |
|    --           |
|              -- |
|              || |
|              || |
|    --  >     || |
|    ||        || |
|-----------------|

ज्ञात मामूली कीड़े:

  • यदि आपको दोहरा अंक प्राप्त होता है, तो यह लेआउट को गड़बड़ कर देता है

  • यह आसान नहीं है!!! (लेकिन मूल भी नहीं था)

  • दक्षता और गोल्फ के बीच एक व्यापार है

अपने हाईस्कोर के साथ टिप्पणी करने के लिए स्वतंत्र महसूस करें।

इसके अलावा, यह मेरा पहला कोड गोल्फ पोस्ट है, इसलिए संपीड़न आदि के सुझावों का स्वागत किया जाएगा


1
आप varकीवर्ड और परिवर्तनशील घोषणा को हटा सकते हैं । तुम भी Array(153)द्वारा प्रतिस्थापित कर सकते हैं []और शायद ~~(Math.random()*5)+1द्वारा प्रतिस्थापित कर सकते हैं1+new Date%5
माइकल एम।

यदि आप लेआउट को अनदेखा करते हैं, तो jQuery को छोड़ें और HTML जोड़ें यह 416 बाइट्स है: jsbin.com/flap/1/edit?html,output
anemkei

17 को जन्म दिया। मेरा कोई जीवन नहीं है, मुझे पता है।
इब्राहिम माहिर

Known_minor_bugs += "irritating, unwanted and distracting text selections when double clicking";
इब्राहिम माहिर

22

जावास्क्रिप्ट + jQuery (997)

Chrome 32, Firefox 27, IE9 पर परीक्षण किया गया

इस पृष्ठ से कंसोल (F12) खोलें और निम्नलिखित कोड को कॉपी / पेस्ट करें।

scroll(0,0);h=1/30;p=[];r=320;n=0;w=80;f=2.5;o=80;t=setInterval;$('#question').children().hide().end().append('<p id="m"></p>').append('<p id="s"></p>').click(function(){v=100});$('#s').css({position:'relative',margin:'auto',border:'2px solid',width:200,height:r}).append('<img id="b" src="//i.imgur.com/4w6Vgud.gif"/>');$('<style>.p{width:1px;border:1px solid;position:absolute}</style>').appendTo('head');function u(){$('#m').text('score '+m+' (max '+n+')')}function i(){x=r/2;v=0;m=0;p.length=0;u()}i();t("v-=h*100;x+=h*v;if(x<0||x>r)i();$('.p').remove();for(j=0;j<p.length;j++){p[j].r+=h*w;if(p[j].r>200){p.shift();j--;m++;if(m>n)n=m;u();}else if((p[j].r>165&&p[j].r<185)&&(x<p[j].h||x>p[j].h+o))i();else{$('<div class=p></div>').appendTo('#s').css({bottom:0,right:p[j].r,height:p[j].h});$('<div class=p></div>').appendTo('#s').css({bottom:p[j].h+o,right:p[j].r,height:320-p[j].h-o})}}$('#b').css({position:'absolute',left:0,bottom:x-25})",h*1e3);t("p.push({h:Math.random()*(r-o),r:0})",f*1e3)

यहाँ छवि विवरण दर्ज करें
खेल इस पृष्ठ के प्रश्न ब्लॉक को प्रतिस्थापित करता है।
पक्षी को उड़ाने के लिए आपको गेम फ्रेम पर क्लिक करना होगा।

Ungolfed और टिप्पणी संस्करण:

$('#question').children().hide();
$('#question').append('<div id="score"></div>');
$('#question').append('<div id="scene"></div>');
$('#scene').css({position:'relative',margin:'auto',border:'2px solid black',width:'200',height:'320'});
$('#scene').append('<img id="bird" src="http://fc01.deviantart.net/fs71/f/2014/037/d/0/pixel_art___flappy_bird_by_hipsterli-d75dkyr.gif"></img>');
$('#bird').css({display:'block',position:'absolute',left:0,'pointer-events':'none',margin:'0 auto'});
$(window).scrollTop(0);

//CONFIGURATION
var dt=1/30,      //delta timestep (typically 30Hz)
    pipevel=80,   //pipe velocity (in pixels per second)
    pipefreq=2.5, //pipe spawn frequency (in second)
    holesize=80,  //hole size (in pixels)
    gravity=-100, //gravity (in pixels per square second)
    punchvel=100; //velocity punch when clicked (in pixels per second)

var x, y, pipes=[], roof=$('#scene').height(), score, maxscore=0;

function updateScore() {
  $('#score').text('Score : '+score+' (max : '+maxscore+')');
}

function init() {
  x=roof/2; //position
  v=0; //velocity
  score=0;
  pipes.length=0;

  updateScore();
}

function step() {
  //euler integration
  v+=dt*gravity;
  x+=dt*v;

  if (x<0 || x>roof)  init();

  //pipes
  $('.pipe').remove();
  for (i=0; i<pipes.length; i++) {
    pipes[i].rightpos += dt*pipevel;
    if (pipes[i].rightpos > 200) {
      pipes.shift();
      i--;
      score++;
      if (score>maxscore) maxscore=score;
      updateScore();
    } else if ((pipes[i].rightpos > 165 && pipes[i].rightpos < 185) && (x < pipes[i].holepos || x > pipes[i].holepos+holesize)) {
      //collision
      init();
    } else {
      $('#scene').append('<div class="pipe" style="background-color:#000; width:1px;border:1px solid #000; position:absolute; bottom:0; right:'+Math.floor(pipes[i].rightpos)+'px; height:'+pipes[i].holepos+'px"></div>');
      $('#scene').append('<div class="pipe" style="background-color:#000; width:1px;border:1px solid #000; position:absolute; bottom:'+(pipes[i].holepos+holesize)+'; right:'+Math.floor(pipes[i].rightpos)+'px; height:'+(320-(pipes[i].holepos+holesize))+'px"></div>');
    }
  }

  $('#bird').css({bottom:Math.floor(x)-25});

  setTimeout(step, dt*1000);
}

$('#question').click(function() {
  v=punchvel;
});

function addPipe() {
  pipes.push({holepos:Math.random()*(roof-holesize),rightpos:0});
  setTimeout(addPipe, pipefreq*1000);
}

init();
setTimeout(step, dt*1000);
setTimeout(addPipe, pipefreq*1000);

आप कॉन्फ़िगरेशन (गुरुत्वाकर्षण, पाइप वेग ...) को आसानी से संशोधित कर सकते हैं, टिप्पणी किए गए संस्करण पर एक नज़र डाल सकते हैं।


1
फ़ायरफ़ॉक्स 27 में भी ठीक काम करता है। अच्छी तरह से किया +1
कार्ल-जोहान Sjögren

धन्यवाद, IE9 पर भी काम करता है, इसलिए मुझे लगता है कि यह किसी भी सभ्य ब्राउज़र पर काम करता है :)
माइकल एम।

अच्छा काम :) और हमेशा की तरह जावास्क्रिप्ट पर यहाँ सवाल को लक्ष्य के रूप में गाली दे रहा है: P
masterX244

1
वर्तमान नियंत्रण योजना के साथ, यह गलती से मिसकॉल करने के लिए बहुत आसान है और फिर अगले छेद तक पहुंचने के लिए पर्याप्त रूप से गिरने में सक्षम नहीं है (और फिर इसके बारे में कुछ भी करने में असमर्थ है)।
जो जेड।

1
मैं जो कह रहा हूं, वह यह है कि बीच में कहीं भी गर्भपात करना बहुत आसान है, और ठीक से क्लिक करना भी मुश्किल है क्योंकि आपका पंच हमेशा आपको एक ही प्रारंभिक वेग पर सेट करता है, भले ही आप कितनी तेजी से नीचे गए हों।
जो जेड

5

फ्लॉपी ड्रैगन, जावास्क्रिप्ट, 1024 बी

मैं वर्तमान js1k कम्पो के लिए यह गेम बना रहा हूं ( http://js1k.com )

खेल: http://js1k.com/2014-dragons/demo/1704

_='c.scale(,    ;ontouchH=onmousedown=onkeydowif(e){    }else h=45,d=1};(Eq";Rect(0,0,^,^9Q"-k,0Q+N),0()-k,2E3980-(+3)N(+3)),Y(p="fEFf&{{~_=,;=vviJ.jfVi/.OoyizyhkhEwf74)\\n$fwwuvtU`"+(10<h?"iZ[*)yj:*im**y|Ktdww54#5Dy\\iz[Kzi[Jiijk[e@1!":"zl]LfU{\\lKtBUh{zzU66iigig5\\n&iiyz{vfwwiyDfwiiE"0"v=i-e,w=(j-=h)-eG in p)y=8>>4),z=16&15),Iv+=e?y:z,w+=e?-z:y(dW(h-=6dW!eW(k+=Q,^<kW(k-=^)!dXeX(k+280)%8X(f++,Q<lWl--if(q>jX9q<jX!((k+3)%8)W(j<qXj>2q))e=40;fff";c.font="6em Arial";dWf1,5dX"#FloppyDragon"11,5eW"score"4,4e?"reH":d?"":"H"5,6setTimeout(n,l)})()I40*o-k,a.width/()/2-30*    d=e=f=h=0;g=[];G=0;Y>o;o++)=g[o+Y]=8*Math.random()|0;i=j=3;k=Q;l=qc.fill;c.beginPath(c.moveTo(Style="#G=2E3;o--;)o%Q?,a.height/Y1*g[Q*~~(k/8)+Q]+);g[o]-2*(p.charCodeAt(o)Text(00n=function(){4*):(,1*Gfor(oHstartIc.lineTo(N),-4,1*Q20W&&X||Y1E3^4E4q50';for(Y in $='q^YXWQNIHG    ')with(_.split($[Y]))_=join(pop());eval(_)

सभी फीडबैक और नए विचारों का स्वागत है!


यह फ्लैपी बर्ड से भी कठिन है। अगर आपने फ्लैप एक्शन को कीप ट्रिगर किया है तो खेलना आसान होगा, लेकिन मुझे लगता है कि यह कोड गोल्फ है और अधिक सुविधाओं का मतलब है अधिक कोड।
danmcardle

नहीं, यह ठीक है, अगर आपको लगता है कि यह उपयोगी है, तो मैं कीपर का समर्थन जोड़ने की कोशिश कर सकता हूं ...
एक्सएम

@crazedgremlin keypress control को नवीनतम संस्करण में जोड़ा गया था;)
xem

ठंडा! मुझे पिछले 10 नहीं मिल सकते हैं, लेकिन यह अभी भी शांत है।
danmcardle

2

उद्देश्य C - अपुष्ट

संभवतः सबसे खराब कोड जो मैंने कभी लिखा है।

हैकी बर्ड रनिंग

आप यहां बाइनरी डाउनलोड कर सकते हैं: AsciiBird डाउनलोड बाइनरी

पक्षी को हवा में रखने के लिए नियंत्रण कुंजी को महत्वपूर्ण रूप से टैप करें!

यह Xcode द्वारा संकलित किया गया और टर्मिनल में चलाया गया। इसके रंग हैं! प्रोटिप: अपने टर्मिनल की विंडो का आकार बदलें ताकि आपको स्क्रीन रिफ्रेश का बैकलॉग न दिखे।

main.m:

#import <Foundation/Foundation.h>
#import "ABManager.h"

void drawScreen(int counter)
{
    __block struct ABPoint thisPoint;
    thisPoint.x = 0;
    thisPoint.y = 0;

    __block ABManager *man = [ABManager sharedManager];
    [man.screen enumerateObjectsUsingBlock:^(NSString *c, NSUInteger idx, BOOL *stop)
     {
         NSString *c2 = c;
         NSMutableArray *newObstacles = [[NSMutableArray alloc] init];
         for (NSValue *s in man.obstacles)
         {
             struct ABPoint o;
             [s getValue:&o];

             if (thisPoint.x == o.x)
             {
                 if (thisPoint.y != o.y && thisPoint.y != (o.y + 1) && thisPoint.y != (o.y - 1))
                 {
                     c2 = @"\033[1;33m|\033[0m";
                 }
                 else
                 {
                     if (counter == 0 && thisPoint.y < o.y)
                     {
                         o.x = o.x - 1;

                         if (o.x < 0)
                         {
                             o.x = 49;
                             o.y = (arc4random() % 11) + 1;
                         }

                         if (man.charPos.x == o.x)
                         {
                             man.score = man.score + 1;
                         }
                     }
                 }
             }
             [newObstacles addObject:[NSValue valueWithBytes:&o objCType:@encode(struct ABPoint)]];
         }

         man.obstacles = [[NSMutableArray alloc] initWithArray: newObstacles];


         if (thisPoint.x == man.charPos.x && thisPoint.y == man.charPos.y)
         {
             printf("\033[1;35m>\033[0m");

             if ([c2 isEqualToString:@"\033[1;33m|\033[0m"])
             {
                 man.shouldExit = TRUE;
             }
         }
         else
         {
             printf("%s", [c2 UTF8String]);
         }

         if (idx % 50 == 49)
         {
             printf("\n");
             thisPoint.y = thisPoint.y + 1;
             thisPoint.x = 0;
         }
         else
         {
             thisPoint.x = thisPoint.x + 1;
         }
     }];
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        ABManager *man = [ABManager sharedManager];
        int count = 0;
        BOOL ignoreKeypress = FALSE;
        while (TRUE)
        {
            if (CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState,59) && !ignoreKeypress)
            {
                ignoreKeypress = TRUE;
                struct ABPoint p = man.charPos;
                p.y = p.y - 2;
                man.charPos = p;
            }
            else
            {
                ignoreKeypress = CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState,59);

                if (count > 3)
                {
                    count = 0;
                    struct ABPoint p = man.charPos;
                    p.y = p.y + 1;
                    man.charPos = p;
                }
                else
                {
                    count = count + 1;
                }
            }

            if (man.charPos.y < -1 || man.charPos.y > 11 || man.shouldExit)
            {
                exit(1);
            }

            printf("\n\n\n\n\n");
            printf("\033[1;36m[\033[0m\033[1;30mHacky Bird\033[0m\033[1;36m]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\033[0m\n");
            drawScreen(count);
            printf("\033[1;32m[\033[0m\033[1;31mScore: %li\033[0m\033[1;32m]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\033[0m\n", (long)man.score);

            [NSThread sleepForTimeInterval:0.0157];
        }

    }
}

ABManager.h

#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>

struct ABPoint {
    NSInteger x;
    NSInteger y;
};

@interface ABManager : NSObject
{

}

@property (nonatomic, readwrite) NSMutableArray *screen;
@property (nonatomic, readwrite) NSMutableArray *obstacles;
@property (nonatomic, readwrite) struct ABPoint charPos;
@property (nonatomic, readwrite) NSInteger score;
@property (nonatomic, readwrite) BOOL shouldExit;;

+ (id)sharedManager;

@end

ABManager.m

#import "ABManager.h"

@implementation ABManager
+ (id)sharedManager {
    static ABManager *sharedMyManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedMyManager = [[self alloc] init];
    });
    return sharedMyManager;
}

- (id)init
{
    if (self = [super init]) {

        self.screen = [[NSMutableArray alloc] init];
        for (NSUInteger i=0; i < 600; i++)
        {
            [self.screen addObject:@" "];
        }

        self.score = 0;

        self.shouldExit = FALSE;

        struct ABPoint p;
        p.x = 5;
        p.y = 0;

        self.charPos = p;

        struct ABPoint o;
        o.x = 10;
        o.y = 5;

        struct ABPoint o2;
        o2.x = 30;
        o2.y = 5;

        self.obstacles = [[NSMutableArray alloc] initWithArray:@[[NSValue valueWithBytes:&o objCType:@encode(struct ABPoint)],[NSValue valueWithBytes:&o2 objCType:@encode(struct ABPoint)]]];
    }

    return self;
}

@end

2

रंग एनीमेशन और भौतिकी; शुद्ध जावास्क्रिप्ट, 457 (335) बाइट्स

इस मंच में यह मेरी पहली पोस्ट है; मैंने इस कोड को बनाया और पूर्वव्यापी रूप से इसे पोस्ट करने के लिए यह थ्रेड पाया।
यहाँ HTML में कूटबद्ध किया गया है, एक HTML फ़ाइल में कॉपी / पेस्ट करने के लिए तैयार है:

<body><script>A=120;B=280;d=document;y=180;x=v=n=s=0;f=140;c=d.createElement('canvas');p=c.getContext('2d');c.width=B;c.height=400;c.onclick=()=>{v-=6};p.font='50px Arial';d.body.appendChild(c);r=(h,t,k=0,i='#0f0',w=40)=>{p.fillStyle=i;p.fillRect(h,k,w,t)};b=setInterval(()=>{if(x==0){n=f;f=Math.floor(B*Math.random());x=160}x--;v+=.1;y+=v;r(0,400,0,'#08f',B);r(20,40,y,'#fc0');r(x-40,n);r(x+A,f);r(x-40,B-n,n+A);r(x+A,B-f,f+A);if(x==60)s++;p.strokeText(s,A,80);if(x>20&&x<100&&(y<n||y>n+80)){clearInterval(b);location.reload()}},15)</script><br>Made by Thomas Kaldahl</body>

इसमें पिक्सेल परफेक्ट टक्कर, सटीक द्विघात भौतिकी और चिकनी रंग एनिमेशन हैं, जो सभी 457 बाइट्स में हैं, जो पूरी तरह से स्वतंत्र ऑफ़लाइन जावास्क्रिप्ट कोड के लायक हैं, जो कि अधिक विस्तार और विवरण में यहाँ दिखाया गया है:

<!--entire HTML shell is omitted in golf-->
<body>
    <script>
        //common numbers and the document are assigned shortcut letters
        A = 120;
        B = 280;
        d = document;

        y = 180; //y position of the top of the bird
        x = //x position of scrolling for pipes
        v = //vertical velocity of bird
        n = //y position of the top of the nearest pipe opening
        s = 0; //score
        f = 140; //y position of the top of the farther pipe opening
        c = d.createElement('canvas'); //canvas
        p = c.getContext('2d'); //canvas context
        //set canvas dimensions
        c.width = B;
        c.height = 400;

        c.onclick = () => { v -= 6 }; //apply jump velocity to bird when clicked
        p.font = '50px Arial'; //font for scoring (omitted in golf)
        d.body.appendChild(c); //add canvas to html page
        //draw a rectangle on the canvas
        r = (h, t, k = 0, i = '#0f0', w = 40) => {
            p.fillStyle = i;
            p.fillRect(h, k, w, t)
        };
        //main loop (not assigned to b in golf)
        b = setInterval( () => {
            if (x == 0) { //the x position is a countdown. when it hits 0:
                n = f; //the far pipe is now the near pipe, overwriting the old near pipe
                f = B * Math.random() //assign the far pipe a new vertical location
                x = 160; //restart the countdown back at 160
                //(score increments here in golf)
            }
            x--; //count down
            v += .1; // apply gravity to velocity
            y += v; // apply velocity to bird
            r(0, 400, 0, '#08f', B); //draw background
            r(20, 40, y, '#fc0'); //draw bird (non-default color is omitted in golf)
            r(x - 40, n); //draw first pipe upper half
            r(x + A, f); //draw second pipe upper half
            r(x - 40, B - n, n + A); //draw first pipe lower half
            r(x + A, B - f, f + A); //draw second pipe lower half
            if (x == 60)
                s++; //(this is done earlier on golf)
            p.strokeText(s, A, 80); //draw score
            // if the bird is in range of the pipes horizontally,
            // and is not in between the pipes,
            if (x > 20 && x < 100 && (y < n || y > n + 80)) {
                clearInterval(b); location.reload() //omit interval clear in golf
            }
        }, 15) //(reduced the frame delay to 9, a 1 digit number, in golf)
    </script><br>
    Made by Thomas Kaldahl <!-- GG -->
</body>

मज़े के लिए, यहाँ 1066 बाइट संस्करण है, जो कट्टर ग्राफिक्स के साथ है:

<body style='margin:0'><script>var y=180,x=v=n=s=0,f=140,c=document.createElement('canvas'),p=c.getContext('2d');c.width=280;c.height=400;c.onclick=function(){v-=6};c.style='width:68vh;height:97vh';document.body.appendChild(c);p.font="50px Arial";p.shadowColor='#444';p.shadowBlur=9;p.shadowOffsetX=p.shadowOffsetY=5;function r(h,t,k=0,i='#0f0',j='#0a0',u=0,l=0,w=40){var g=p.createLinearGradient(h,l,h+40,u);g.addColorStop(0,i);g.addColorStop(1,j);p.fillStyle=g;p.fillRect(h,k,w,t);}b=setInterval(function(){if(x==0){n=f;f=Math.floor(280*Math.random());}x=x==0?159:x-1;v+=.1;y+=v;r(0,400,0,'#08c','#0cf',280,0,280);r(20,40,y,'#ff0','#fa0',y+40,y);r(x-40,n);r(x-50,20,n-20,'#0f0','#0a0',n+20,n,60);r(x+120,f);r(x+110,20,f-20,'#0f0','#0a0',f+20,f,60);r(x-40,280-n,n+120);r(x-50,20,n+120,'#0f0','#0a0',n+140,n+100,60);r(x+120,280-f,f+120);r(x+110,20,f+120,'#0f0','#0a0',f+140,f+100,60);if(x==60){s++;}p.fillStyle='#fff';p.fillText(s,120,80);if(x>20&&x<100&&(y<n||y>n+80)||y<0||y>360){clearInterval(b);location.reload();}},15);</script><br>Made by Thomas Kaldahl</body>

इसके अलावा, यह DEFLATE जैसी संपीड़न प्रणाली का उपयोग करने के लिए धोखा दे रहा है?
नीचे कोड के एक DEFLATEd संस्करण के लिए ASCII85 कोड है:
वैसे, यह कुल 335 बाइट्स है।

Gapon95_Wi'Kf'c (मैं ## 6'h, + सेमी \ JZeFO <ज; $ डब्ल्यू '# A1', RqNigBH02C '# R $ मी] <i <X # 6GR`2pE <Ri5mu-एन% cVPrsJe: * आर ^ pnr9bI @ [DAZnPP02A ^ $ एम.एन. / @ `U7l5gm !! VR4> एक;!।? पी यू [Pk8] jCnOP% दीव` fWql> "tuO4 / KbIWgK;। 7 / iJN'f2, hnFg8e ^ अतः * t \ * `, 3JBn6j (f`O #], एम 0;? 5Sa35Zc @ * XaBs @ एन%] कश्मीर \ M76qa [.ie7n (^ * Z5G-lfhUZ3F # '%, X17Pj1u] एल) LjpO6XbIl% N3tJhTsab8oV1T (एमसी $ 9 मीट्रिक टन, 90VMmnfBNKEY (^ 'UV4c दप?': एक्स (4, * WCY + एफ; 19eQ `FK0I" (Ude: एफ एंड XV & ^ Rc + 'SWRIbd8Lj9bG.l (MRUc1G8HoUsn # एच \ वी (8 "! वाई $ / टीटी (? ^ kATb (OreGfWH7uIf


यह बहुत अच्छा लगता है, लेकिन दुर्भाग्य से लिए codr गोल्फ सवाल हम की आवश्यकता होती है golfed कोड।
NoOneIsHere

3
@NoOneIsHere कृपया पोस्ट पढ़े और अपने लिए गोल्फ कोड देखें
ei2

मुझे क्षमा करें, मैं अभी देख रहा हूं। यह एक बेहतरीन जवाब है।
NoOneIsHere

2

सी, 386 351 347 341 बाइट्स (विंडोज, मिनगीडब्ल्यू), 332 एक टर्मिनल एमुलेटर के साथ

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

निश्चित रूप से सबसे सुंदर प्रविष्टि नहीं है, लेकिन यह फ्लैपी पक्षी के मुख्य यांत्रिकी को पकड़ती है: पक्षी नीचे की ओर तेजी से बढ़ता है, एक कुंजी दबाने से वह ऊपर कूदता है, पाइप को छूता है या स्क्रीन के किनारों का खेल समाप्त होता है, स्कोर साफ पाइप की संख्या है।

#import<windows.h>
#define T(x)P[v*10+x]=
char P[71];X,Y,W,s;main(v){srand(time(0));for(float y=1,t=0;!(v<0|v>6|(v<Y|v>=Y+W)&X>0&X<3);Sleep(99)){y+=t=kbhit()?getch(),-.9:t+.3;--X<0?X=8,Y=rand()%3+1,W=rand()%2+2:X-1||++s;memset(P,32,70);for(v=0;v<7;T(9)10,T(X)v<Y|v++>=Y+W?35:32);v=y;T(1)79;T(2)62;system("cls");printf("%s\nSCORE: %d",P,s);}}

यह 333 बाइट्स के लिए छोटा किया जा सकता है, अगर POSIX टर्मिनल एमुलेटर का उपयोग किया जाता है (जैसे Cmder):

#import<windows.h>
#define T(x)P[v*10+x]=
char P[71];X,Y,W,s;main(v){srand(time(0));for(float y=1,t=0;!(v<0|v>6|(v<Y|v>=Y+W)&X>0&X<3);Sleep(99)){y+=t=kbhit()?getch(),-.9:t+.3;--X<0?X=8,Y=rand()%3+1,W=rand()%2+2:X-1||++s;memset(P,32,70);for(v=0;v<7;T(9)10,T(X)v<Y|v++>=Y+W?35:32);v=y;T(1)79;T(2)62;printf("\033c%s\nSCORE: %d",P,s);}}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.