Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Techie-kunst

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]
020
06.08.2003, 11:04 Uhr
0xdeadbeef
Gott
(Operator)


Wo wir grad bei IOCCC sind - der hier ist auch schön:

C++:
#include<unistd.h>
#include<time.h>

#define k ("C9B7351A@D-/E+F?')G>H%J#=I"[(d[(i/13)*2]*91+d[(i/13)*2+1]-3220)&(\
4096>>(i%13))?l+1:l]-59)
#define g(n)e(n<13?n:n<20?n+1:n>20?11+n/10:13,0);e(n>12&&n<20?26:n>20&&n%10?n%\
10:-1,2);
#define x(n)g(localtime(&a)->tm_##n)

unsigned char *d="KZs2ITTwhwZYvec@JbYxOjf9-TZRGDb/el7#q(`SZ#|_neTwq\\MqJ5cVgte\
K-ReK-(Mq8+D'6Ui0tG88vXJ-Tu{VI=d%cR]h7CumwBq\\-#{thj8fw$OEfEvLHP13_##w.OD[7Cw2\
]<T{|[F}L;L:*+A#PwLnp{9'M3Mr|w_|unm'}$*(5]_$?O9zO{{wz4p6vP8Ipu}$BQospf=-Isnyl'\
|g53o^c`ov-P`-x+|ZAd<e?<'b9P|LkZOf{B-8`K([srqv&gy1,:}$|s7D{yN6M#cQyKpC|*_|#xA#\
'YfQ}$k$kr7dM#dcnWDg|PHdA#^j&q}$x@(a;k2JB]50ZKp{xRwbkTm.v\\a3fJ@V[`J#fN`s|sZeH\
mmHX7`JKiry4sm,bUfz69{rt'k*pBq^l,ut6UVvb9N%r%l:Py3r[.Z/pBkaz2J4u{GTu)hyp#%gbS$\
r`mzi9G|3M,r}-Dt?w)_##%fQt$k&n]e$HzFXu(|Fvt`i#$A#|ykrz+nhs'P#|pm*9[_#,5P#}$}$x\
&s(i,HzO'&d&g?/_$P#kZ7Dn]e$J{zi8ypi|hq$_.|cLx`sy;f8GRMQM#7R5$hym*:^`sxrvtfQ|z_\
N|ye[7dH[}#Ts\\59V@|#z}$}$y;usL)vXFiA0AukZ8H|fyKurd]|s5<|xq@Cpm,}${,e$KufO?/2M\
t$zmM#vtfQ|zRKlEA#P&fPOwJ#pf_$?/2#@|$w}$?fLxA#^-}$cM^aA#&g#wIv?^|yY#s)Lwt'K#ON\
yoXKYkpCl0m}D[9OGU7n([ZrL)[8eRy7uR*PJ#^5xRG>zSf>p]ZrJ_[9q?qgYe^4$r3lY$4SdsSyNv\
J_l&w2I?q#fN*F1n|s9OGUv|w&l+pR-3Nudtyn@|Dfq#^o|s9Pt=oZCol/{VdgkLdwyn1yDed}?Dzi\
}#Kje#d}Y${8pSt<q?qgIv|`DH?9}$O{k(LgE;|KU-tJnWOw*F@YP#|yY$b4|.50[2d}D'kaqhp;JE\
$r&fH&'6nykYGCv>K$t?yLbwtUn[F{ncOx_.:K#nwF#f|HQs&<&bfQPE?:uJm*&\\S=*/@|We*w@$@\
f0,*H])WL<i@^xX@)(a.>MV*p{Zqf&zH%###################u2#A#_$A#_$A#_$A#_$@tA#QI#\
3#0&:p#?1[P*6WQ@i#C1{[;@|1}S%^r#g.d^z#M}$ziZe|kU6oZbq5$kF]4[E^nA#_.|}e$Ku^r&WA\
#_$?/*P_$@t&gA#[;_$A#^j2#A#_*d}@v^z#8?D?D9Q`s}$5$L|u<3JC/xVz;#s^{?9$M}$x_Y,7uP\
$"
,p[6789];

int o[]={145,1145,1745,2545,3045,4045,4345,5145,5745,6369},i=0,j=0,l=0;

void e(n,h){
for(j=0;n>0;n-=!(p[j++]^9));
for(;!n&&j[p]^9;j++)write(1,p+p[j][o],o[p[j]+1]-p[j][o]);
for(i=0;i<h[o];i++)write(1,d+7,1);}

int main(){
time_t a=time(&a);

for(;i<8476;j[p]=k>=0?j<*o?k-2:(p[j+1]=k<<4):0,j+=k>=0?1+(j>=*o):0,
l=-k*(k<0),i++);e(21,4);x(hour)e(22,1);x(min)e(23,1);e(25,0);x(sec)e(24,0);

return;}


Mal kompilieren und ./a.out > /dev/dsp aufrufen. Ist nicht sonderlich deutlich gesprochen, aber man sollte sowas wie "The time is HH hours MM minutes SS seconds" hören. Das nenn ich mal richtig krank...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 06.08.2003 um 11:04 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
06.08.2003, 11:09 Uhr
0xdeadbeef
Gott
(Operator)


Und das hier

C++:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <signal.h>
#define m(b)a=b;z=*a;while(*++a){y=*a;*a=z;z=y;}
#define h(u)G=u<<3;printf("\e[%uq",l[ u ])
#define c(n,s)case n:s;continue
char x[]="((((((((((((((((((((((",w[]=
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";char r[]={92,124,47},l[]={2,3,1
,0};char*T[]={"  |","  |","%\\|/%"," %%%",""};char d=1,p=40,o=40,k=0,*a,y,z,g=
-1,G,X,**P=&T[4],f=0;unsigned int s=0;void u(int i){int n;printf(
"\233;%uH\233L%c\233;%uH%c\233;%uH%s\23322;%uH@\23323;%uH \n",*x-*w,r[d],*x+*w
,r[d],X,*P,p+=k,o);if(abs(p-x[21])>=w[21])exit(0);if(g!=G){struct itimerval t=
{0,0,0,0};g+=((g<G)<<1)-1;t.it_interval.tv_usec=t.it_value.tv_usec=72000/((g>>
3)+1);setitimer(0,&t,0);f&&printf("\e[10;%u]",g+24);}f&&putchar(7);s+=(9-w[21]
)*((g>>3)+1);o=p;m(x);m(w);(n=rand())&255||--*w||++*w;if(!(**P&&P++||n&7936)){
while(abs((X=rand()%76)-*x+2)-*w<6);++X;P=T;}(n=rand()&31)<3&&(d=n);!d&&--*x<=
*w&&(++*x,++d)||d==2&&++*x+*w>79&&(--*x,--d);signal(i,u);}void e(){signal(14,
SIG_IGN);printf("\e[0q\ecScore: %u\n",s);system("stty echo -cbreak");}int main
(int C,char**V){atexit(e);(C<2||*V[1]!=113)&&(f=(C=*(int*)getenv("TERM"))==(
int)0x756E696C||C==(int)0x6C696E75);srand(getpid());system("stty -echo cbreak"
);h(0);u(14);for(;;)switch(getchar()){case 113:return 0;case 91:case 98:c(44,k
=-1);case 32:case 110:c(46,k=0);case 93:case 109:c(47,k=1);c(49,h(0));c(50,h(1
));c(51,h(2));c(52,h(3));}}


ist ein schönes Spiel. Mit b,n,m nach links, geradeaus und rechts, 1-4 Geschwindigkeit regeln, q beendet.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 06.08.2003 um 11:10 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
06.08.2003, 14:51 Uhr
0xdeadbeef
Gott
(Operator)


Wobei, wenn man das ein bisschen auseinanderpfriemelt, ist es sogar recht gut strukturiert.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
06.08.2003, 14:51 Uhr
Tommix




Zitat:
FloSoft postete
seltsam, der vc will mir das nicht kompilieren

Bei mir schon. Das ist C (kein ++)!

Gruss, Tommix

Edit:
Hatte die zweite Seite des Threads übersehen, steht ja alles schon da!

Dieser Post wurde am 06.08.2003 um 14:55 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
06.08.2003, 15:00 Uhr
Pablo
Supertux
(Operator)


@beefy: Es funktioniert, allerding versteht man ganz wenig. Was ich verstehe ist: the time is fourtenn und dann verstehe ich nicht mehr.

Dein zweites Programm verstehe ich nicht ganz, was er tut. Wenn ich die Pfeiltatsten drücke, dann wird das mit einem Score beendet.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
06.08.2003, 15:04 Uhr
typecast
aka loddab
(Operator)


Du musst auch die Tasten b(links), n (geardeau), m (rechts) drücken
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
06.08.2003, 15:16 Uhr
Pablo
Supertux
(Operator)


Es hat trozdem nicht funktioniert! Oder das ist was ich glaube!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
06.08.2003, 15:24 Uhr
typecast
aka loddab
(Operator)


Was hat nicht funktioniert?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
06.08.2003, 15:28 Uhr
0xdeadbeef
Gott
(Operator)


Hm. Bei mir funzt das zweite wunderbar. Auf manchen Laptops könntest du vielleicht Probleme kriegen, weil das Programm Num-Lock anschaltet, wenn du im ersten Gang bist (printf("\e[%uq]",l[0]);), aber ansonsten...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 06.08.2003 um 15:28 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
06.08.2003, 15:33 Uhr
0xdeadbeef
Gott
(Operator)


ich habs mal ein bisschen auseinandergepfriemelt und mit sprechenderen Variablennamen versehen. So sieht das Programm in Normal-C aus:

C++:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <signal.h>

#define LEFT (-1)
#define RIGHT (1)
#define FWD   (0)

#define MAX_TRACK_INDEX (21)
#define MAX_TREE_INDEX   (4)

int  track[] = {40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
                 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
                 40, 40},
     width [] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
                  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
     led   [] = { 2, 3, 1, 0};

char delim [] = { '\\', '|', '/' },
    *tree  [] = {"  |",
                 "  |",
                 "%\\|/%",
                 " %%%",
                 ""};
int  tree_ix  = MAX_TREE_INDEX,
     tree_pos,
     delim_ix =   1,
     pos      =  40,
     oldpos   =  40,
     steer    = FWD,
     lauf,
     speed    =  -1,
     gear     =   0,
     sound_on =   0;

unsigned int score = 0;

void do_main (int sig) {
  int n;

  pos += steer;
  printf ("\233;%uH\233L%c\233;%uH%c\233;%uH%s\23322;%uH@\23323;%uH \n",
          track[0] - width[0], delim[delim_ix], track[0] + width[0],
          delim[delim_ix], tree_pos, tree[tree_ix], pos, oldpos);

  if (abs (pos - track[MAX_TRACK_INDEX]) >= width[MAX_TRACK_INDEX])
    exit (0);

  if (speed != gear*8) {
    struct itimerval t = { 0, 0, 0, 0 };

    speed += (speed < gear*8) ? 1 : -1;

    t.it_interval.tv_usec = t.it_value.tv_usec = 72000 / (speed / 8 + 1);
    setitimer (0, &t, 0);

    if(sound_on) printf ("\e[10;%u]", speed + 24);
  }

  if(sound_on) putchar (7);

  score += (9 - width[MAX_TRACK_INDEX]) * (speed / 8 + 1);
  oldpos = pos;

  for(lauf = MAX_TRACK_INDEX; lauf > 0; --lauf) {
    width[lauf] = width[lauf - 1];
    track[lauf] = track[lauf - 1];
  }

  if((n = rand ()) % 256 == 0 && width[0] > 1)
    --width[0];

  if (tree[tree_ix][0]) {
    ++tree_ix;
  } else if(!(n&0x1f00)) {
    while (abs ((tree_pos = rand () % 76) - track[0] + 2) - width[0] < 6);
    ++tree_pos;
    tree_ix = 0;
  }

  if((n = rand () & 31) < 3)
    (delim_ix = n);

  if(delim_ix == 0 && --track[0] - width[0] <= 0){
    ++track[0];
    ++delim_ix;
  } else if(delim_ix == 2 && ++track[0] + width[0] >= 80) {
    --track[0];
    --delim_ix;
  }

  signal (SIGALRM, do_main);
}

void do_on_exit () {
  signal (SIGALRM, ((__sighandler_t) 1));
  printf ("\e[0q\ecScore: %u\n", score);
  system ("stty echo -cbreak");
}

int main (int argc, char *argv[]) {
  int term;
  char c;

  atexit (do_on_exit);

  if((argc < 2 || *argv[1] != 113)) {
    term = *(int*) getenv("TERM");
    if (term == (int) 0x756E696C || term == (int) 0x6C696E75)
      sound_on = 1;
  }

  srand (getpid ());
  system ("stty -echo cbreak");

  printf("\e[%uq", led[gear]);

  do_main (SIGALRM);

  for(;;)
    switch (c = getchar ()) {
    case 'q':
      return 0;
    case '[':
    case 'b':
    case ',':
      steer = LEFT;
      continue;
    case ' ':
    case 'n':
    case '.':
      steer = FWD;
      continue;
    case ']':
    case 'm':
    case '/':
      steer = RIGHT;
      continue;
    case '1':
    case '2':
    case '3':
    case '4':
      gear = c - '1';
      printf ("\e[%uq", led[gear]);
      continue;
    }
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 06.08.2003 um 15:33 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: