1. Java / Говнокод #5939

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    package t;import java.awt.*;import java.awt.event.*;import javax.swing.*;class M
    extends JFrame implements Runnable{int T=100,s,W=500,H=W,x=T,l=10,y,i,S,L;M(){
    setBounds(T,T,W,H);new Thread(this).start();}public void paint(Graphics g){super
    .paint(g);g.drawOval(x,y,l,l);g.drawRect(i,H-l,T,l);g.drawString("Sco "+s,l,T);}
    public void processKeyEvent(KeyEvent e){int k=e.getKeyCode();if(k==37)i-=l;if(k
    ==39)i+=l;super.processKeyEvent(e);}public static void main(String[]args){new M(
    ).setVisible(true);}public void run(){while(true){try{Thread.sleep(5);}catch
    (Exception e){}x+=S==0?1:-1;y+=L==0?1:-1;if(y>H-l){if(x>i&&x<i+T){s++;}else{S=0;
    L=0;x=T;y=0;}}if(x>W-l)S=1;if(x<l)S=0;if(y>H-l)L=1;if(y<l)L=0;repaint();}}}

    рабочий JSwing теннис :9 строчек

    Запостил: Egor, 09 Марта 2011

    Комментарии (9) RSS

    • Так и до 2.5 довести можно.

      P.S. Жаль, видимо, нет там директив типа #define pv public void, можно было бы ещё сократить.
      Ответить
    • так можно и в одну строчку. При подсчете строчек нужно нормальное форматирование
      Ответить
    • а тут не больше 80- буков в строчке (по netbeans красной линии форматировалось)
      Ответить
    • Оптимизированный вариант (на 62 символа короче):
      import javax.swing.*;import java.awt.*;import java.awt.event.*;class M extends
      JFrame{int T=100,s,W=500,H=W,x=T,l=10,y,i,S=1,L=S;M(){setBounds(T,T,W,H);new
      Thread(){public void run(){while(1>0){try{Thread.sleep(5);}catch(Exception e){}
      x+=S;y+=L;if(y>H-l){if(x>i&&x<i+T){s++;L=-1;}else{L=S=1;x=T;y=0;}}if(x>W-l)S=-1
      ;if(x<l)S=1;if(y<l)L=1;repaint();}}}.start();}public void paint(Graphics g){
      super.paint(g);g.drawOval(x,y,l,l);g.drawRect(i,H-l,T,l);g.drawString("Sco "+s,
      l,T);}public void processKeyEvent(KeyEvent e){int k=e.getKeyCode();if(k>36&&k<
      40)i+=l*(k-38);super.processKeyEvent(e);}public static void main(String[]a){new
      M().setVisible(1>0);}}
      Ответить
      • тут в строках меряют :)
        Ответить
        • Ну можно и в строчках.
          import javax.swing.*;import java.awt.*;import java.awt.event.*;class M extends
          JFrame{int T=100,s,W=500,H=W,x=T,l=10,y,i,S=1,L=S;M(){setBounds(T,T,W,H);new
          Thread(){public void run(){while(1>0){try{Thread.sleep(5);}catch(Exception e){}
          x+=S;y+=L;if(y>H-l){if(x>i&&x<i+T){s++;L=-1;}else{L=S=1;x=T;y=0;}}if(x>W-l)S=-1
          ;if(x<l)S=1;if(y<l)L=1;repaint();}}}.start();}public void paint(Graphics g){
          super.paint(g);g.drawOval(x,y,l,l);g.drawRect(i,H-l,T,l);g.drawString("Sco "+s,
          l,T);}public void processKeyEvent(KeyEvent e){int k=e.getKeyCode();if(k>36&&k<
          40)i+=l*(k-38);}public static void main(String[]a){new M().setVisible(1>0);}}
          Ответить
          • >>while(true){
            >>while(1>0){
            Уже тогда унарное И на побитовое заменить стоило бы, чего уж.
            Ответить
            • Да, там ещё несколько байт на трюках выгадать можно.
              Ответить
    • Ха. При минусовании ниже -11 дает ошибку
      "Ошибка учета голоса!
      Обновите страницу и попытайтесь еще раз" :)
      Страйкеру на доработку !
      Ответить

    Добавить комментарий