├── .gitignore ├── LICENSE ├── README.md ├── ascii_robot ├── bot.v └── parts.v └── v.mod /.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | *.o 3 | *.so 4 | .*.c 5 | *.tmp.c 6 | *.obj 7 | *.exp 8 | *.ilk 9 | *.pdb 10 | *.dll 11 | *.lib 12 | *.bak 13 | a.out 14 | .noprefix.vrepl_temp* 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Swastik Baranwal 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ascii robot 2 | 3 | ASCII Robot Generator in V 4 | 5 | ## Installation: 6 | 7 | - Via `git clone` 8 | - `git clone https://github.com/Delta456/ascii_robot` 9 | - Via `v install` 10 | - `v install ascii_robot` 11 | - Via `vpkg` 12 | - `vpkg install ascii_robot` 13 | 14 | ## Usage 15 | 16 | - `random_id()` returns a random 5 digit hex number in string. 17 | 18 | - `generate(string)` returns a string optional. string returns random made ASCII bot depending upon the 5 digit number. 19 | 20 | - `must_generate(string)` is same as `generate()` but returns an empty string if the hex number provided is not valid. 21 | 22 | - `random_robot()` returns a random ASCII robot. 23 | 24 | In main.v 25 | 26 | ```v 27 | import delta456.ascii_robot as robot 28 | import rand 29 | 30 | fn main() { 31 | rand.seed([u32(42), 0]) // or use your seeder 32 | println(robot.must_generate('1f35a')) 33 | 34 | for i := 0; i < 5; i++ { 35 | println(robot.random_robot()) 36 | } 37 | } 38 | 39 | ``` 40 | ## Bot Types 41 | 42 | Total ASCII Robot Types possible: 43 | 44 | ``` 45 | _ _,_,_ _ 46 | \( q p )/ 47 | \_#_/ 48 | .==|>o<|==:=L 49 | '=c|___| 50 | ]| |[ 51 | [_| |_] 52 | 53 | 54 | 55 | 56 | ,_,_, 57 | \O O/ 58 | /_E_\ 59 | ()ooo|\=/|ooo() 60 | |___| 61 | /| |\ 62 | [_] [_] 63 | 64 | 65 | 66 | 67 | T___ 68 | |O O| 69 | \_^_/ 70 | /|(\)|\ 71 | d |___| b 72 | .'._.'. 73 | |_| |_| 74 | 75 | 76 | 77 | 78 | \.===./ 79 | | p q | 80 | \_^_/ 81 | /| []|\ 82 | ()/|___|\() 83 | /| |\ 84 | (0) (0) 85 | 86 | 87 | 88 | 89 | T___ 90 | |q p| 91 | \_`_/ 92 | (m9\:::/\ 93 | /___\6 94 | // \\ 95 | _\\ //_ 96 | 97 | 98 | 99 | 100 | ,_,_, 101 | \b d/ 102 | /_@_\ 103 | (m9\:::/\ 104 | /___\6 105 | [] [] 106 | /:] [:\ 107 | 108 | 109 | 110 | 111 | .---. 112 | } n n { 113 | \_-_/ 114 | .'c ."|_|". n`. 115 | '--' /_\ `--' 116 | /| |\ 117 | [_] [_] 118 | 119 | 120 | 121 | 122 | \.===./ 123 | | O O | 124 | \_E_/ 125 | ,"|+ |". 126 | _\|+__|/_ 127 | ]| |[ 128 | [_| |_] 129 | 130 | 131 | 132 | 133 | ,_,_, 134 | \p q/ 135 | /_-_\ 136 | )=o=|L88|=o=( 137 | )=o=|___|=o=( 138 | [] [] 139 | /:] [:\ 140 | 141 | 142 | 143 | 144 | )_( 145 | |0 0| 146 | |_A_| 147 | (m9\:::/\ 148 | /___\6 149 | /| |\ 150 | (0) (0) 151 | 152 | 153 | 154 | 155 | _._._ 156 | -)q p(- 157 | \_#_/ 158 | .'c ."|_|". n`. 159 | '--' /_\ `--' 160 | ( ) 161 | __) (__ 162 | 163 | 164 | 165 | 166 | Y__ 167 | _/p q\_ 168 | \_-_/ 169 | /|(\)|\ 170 | d |___| b 171 | ]| |[ 172 | [_| |_] 173 | 174 | 175 | 176 | 177 | .---. 178 | } d b { 179 | \_r_/ 180 | (m9\:::/\ 181 | /___\6 182 | /7 [| 183 | \/7 [|_ 184 | 185 | 186 | 187 | 188 | ___T_ 189 | | 6=6 | 190 | |__o__| 191 | >===]__o[===< 192 | [o__] 193 | .". 194 | |_| 195 | 196 | 197 | 198 | 199 | ___T_ 200 | | - - | 201 | |__v__| 202 | .=[::+]=. 203 | ]=' [___] '=[ 204 | / | 205 | _\ |_ 206 | 207 | 208 | 209 | 210 | .===./` 211 | /.d b.\ 212 | "\_v_/" 213 | .=(+++)=. 214 | o=" (___) "=o 215 | . \_/ . 216 | . .:::.. . 217 | 218 | 219 | 220 | 221 | _._._ 222 | -)q p(- 223 | \_v_/ 224 | .=(+++)=. 225 | o=" (___) "=o 226 | // \\ 227 | _\\ //_ 228 | 229 | 230 | 231 | 232 | |---| 233 | |q p| 234 | |_O_| 235 | }-. /\--o/\ .-{ 236 | " |___| " 237 | ( ) 238 | __) (__ 239 | 240 | 241 | 242 | 243 | _ _,_,_ _ 244 | \( 9 9 )/ 245 | \_`_/ 246 | /| []|\ 247 | ()/|___|\() 248 | |_|_| 249 | /_|_\ 250 | 251 | 252 | 253 | 254 | o___o 255 | //O O\\ 256 | |\_E_/| 257 | ,=|x|=. 258 | 'c/_\ 'c 259 | . \_/ . 260 | . .:::.. . 261 | 262 | 263 | 264 | 265 | .===. 266 | //O O\\ 267 | \\_@_// 268 | ,=|x|=. 269 | 'c/_\ 'c 270 | |_|_| 271 | /_|_\ 272 | 273 | 274 | 275 | 276 | .===. 277 | //- -\\ 278 | \\_#_// 279 | }-. /\--o/\ .-{ 280 | " |___| " 281 | [] [] 282 | /:] [:\ 283 | 284 | 285 | 286 | 287 | ,_,_, 288 | \- -/ 289 | /_n_\ 290 | >===]__o[===< 291 | [o__] 292 | /7 [| 293 | \/7 [|_ 294 | 295 | 296 | 297 | 298 | .=._,=. 299 | ' (9 9) ` 300 | _)=(_ 301 | .==|>o<|==:=L 302 | '=c|___| 303 | .". 304 | |_| 305 | 306 | 307 | 308 | 309 | T___ 310 | |d b| 311 | \_=_/ 312 | >===]__o[===< 313 | [o__] 314 | /| |\ 315 | (0) (0) 316 | 317 | 318 | 319 | 320 | T___ 321 | |q p| 322 | \_A_/ 323 | ,"|+ |". 324 | _\|+__|/_ 325 | ]| |[ 326 | [_| |_] 327 | 328 | 329 | 330 | 331 | __i 332 | [o o] 333 | ]#[ 334 | /|(\)|\ 335 | d |___| b 336 | .'._.'. 337 | |_| |_| 338 | 339 | 340 | 341 | 342 | T___ 343 | |O O| 344 | \_O_/ 345 | >===]__o[===< 346 | [o__] 347 | . /___\ . 348 | . ..:::::::. . 349 | 350 | 351 | 352 | 353 | \.===./ 354 | | [o] | 355 | \_o_/ 356 | .'c ."|_|". n`. 357 | '--' /_\ `--' 358 | .". 359 | |_| 360 | 361 | 362 | 363 | 364 | .===. 365 | //9 9\\ 366 | \\_n_// 367 | )=o=|L88|=o=( 368 | )=o=|___|=o=( 369 | [] [] 370 | /:] [:\ 371 | 372 | 373 | 374 | 375 | __i 376 | [n n] 377 | ]-[ 378 | /|(\)|\ 379 | d |___| b 380 | ( ) 381 | __) (__ 382 | 383 | 384 | 385 | 386 | .=._,=. 387 | ' (o o) ` 388 | _)n(_ 389 | ,"|+ |". 390 | _\|+__|/_ 391 | _// \\_ 392 | /_o| |o_\ 393 | 394 | 395 | 396 | 397 | .---. 398 | } q p { 399 | \_`_/ 400 | 7--|=0=|--< 401 | |___| 402 | /7 [| 403 | \/7 [|_ 404 | 405 | 406 | 407 | 408 | ___T_ 409 | | ooo | 410 | |__n__| 411 | 7--|=0=|--< 412 | |___| 413 | . /___\ . 414 | . ..:::::::. . 415 | 416 | 417 | 418 | 419 | ,_,_, 420 | \d d/ 421 | /_#_\ 422 | /| []|\ 423 | ()/|___|\() 424 | / | 425 | _\ |_ 426 | 427 | 428 | 429 | 430 | |---| 431 | |b d| 432 | |_u_| 433 | }-. /\--o/\ .-{ 434 | " |___| " 435 | (_|_) 436 | (o|o) 437 | 438 | 439 | 440 | 441 | _._._ 442 | -)ooo(- 443 | \_v_/ 444 | ()ooo|\=/|ooo() 445 | |___| 446 | / | 447 | _\ |_ 448 | 449 | 450 | 451 | 452 | __i 453 | [p q] 454 | ]r[ 455 | (m9\:::/\ 456 | /___\6 457 | /| |\ 458 | (0) (0) 459 | 460 | 461 | 462 | 463 | .===. 464 | //O O\\ 465 | \\_#_// 466 | ,=|x|=. 467 | 'c/_\ 'c 468 | [] [] 469 | /:] [:\ 470 | 471 | 472 | 473 | 474 | .-. 475 | ._(u u)_. 476 | (_O_) 477 | ,"|+ |". 478 | _\|+__|/_ 479 | ( ) 480 | __) (__ 481 | 482 | 483 | 484 | 485 | _._._ 486 | -)d b(- 487 | \_@_/ 488 | }-. /\--o/\ .-{ 489 | " |___| " 490 | // \\ 491 | _\\ //_ 492 | 493 | 494 | 495 | 496 | .=._,=. 497 | ' (u u) ` 498 | _)u(_ 499 | o==|ooo|==o 500 | |___| 501 | [] [] 502 | /:] [:\ 503 | 504 | 505 | 506 | 507 | .===. 508 | //9 9\\ 509 | \\_#_// 510 | }-. /\--o/\ .-{ 511 | " |___| " 512 | .". 513 | |_| 514 | 515 | 516 | 517 | 518 | ,_,_, 519 | \n n/ 520 | /_r_\ 521 | ,"|+ |". 522 | _\|+__|/_ 523 | /| |\ 524 | [_] [_] 525 | 526 | 527 | 528 | 529 | .-. 530 | ._(q p)_. 531 | (_#_) 532 | 7--|=0=|--< 533 | |___| 534 | ]| |[ 535 | [_| |_] 536 | 537 | 538 | 539 | 540 | |---| 541 | |u u| 542 | |_n_| 543 | >===]__o[===< 544 | [o__] 545 | /7 [| 546 | \/7 [|_ 547 | 548 | 549 | 550 | 551 | o___o 552 | //b d\\ 553 | |\_0_/| 554 | }-. /\--o/\ .-{ 555 | " |___| " 556 | |_| 557 | (ooo) 558 | 559 | 560 | 561 | 562 | __i 563 | [o o] 564 | ]-[ 565 | .=(+++)=. 566 | o=" (___) "=o 567 | |_|_| 568 | /_|_\ 569 | 570 | 571 | 572 | 573 | .===. 574 | //q q\\ 575 | \\_^_// 576 | .=[::+]=. 577 | ]=' [___] '=[ 578 | |_| 579 | (ooo) 580 | 581 | 582 | 583 | 584 | )_( 585 | |d b| 586 | |_o_| 587 | .=[::+]=. 588 | ]=' [___] '=[ 589 | .'._.'. 590 | |_| |_| 591 | 592 | 593 | 594 | 595 | |---| 596 | |d d| 597 | |_=_| 598 | .==|>o<|==:=L 599 | '=c|___| 600 | . /___\ . 601 | . ..:::::::. . 602 | 603 | 604 | 605 | 606 | Y__ 607 | _/u u\_ 608 | \_^_/ 609 | .==|>o<|==:=L 610 | '=c|___| 611 | / | 612 | _\ |_ 613 | 614 | 615 | 616 | 617 | __i 618 | [q p] 619 | ]`[ 620 | 7--|=0=|--< 621 | |___| 622 | (_|_) 623 | (o|o) 624 | 625 | 626 | 627 | 628 | .===. 629 | //q p\\ 630 | \\_-_// 631 | .=[::+]=. 632 | ]=' [___] '=[ 633 | ]| |[ 634 | [_| |_] 635 | 636 | 637 | 638 | 639 | _ _,_,_ _ 640 | \( d d )/ 641 | \_u_/ 642 | /| []|\ 643 | ()/|___|\() 644 | .". 645 | |_| 646 | 647 | 648 | 649 | 650 | \.===./ 651 | | p q | 652 | \_-_/ 653 | (m9\:::/\ 654 | /___\6 655 | /| |\ 656 | [_] [_] 657 | 658 | 659 | 660 | 661 | )_( 662 | |p q| 663 | |_u_| 664 | .==|>o<|==:=L 665 | '=c|___| 666 | (_|_) 667 | (o|o) 668 | 669 | 670 | 671 | 672 | o___o 673 | //p q\\ 674 | |\_u_/| 675 | o==|ooo|==o 676 | |___| 677 | .'._.'. 678 | |_| |_| 679 | 680 | 681 | 682 | 683 | o___o 684 | //d d\\ 685 | |\_r_/| 686 | >===]__o[===< 687 | [o__] 688 | [] [] 689 | /:] [:\ 690 | 691 | 692 | 693 | 694 | .===./` 695 | /.p q.\ 696 | "\_O_/" 697 | o==|ooo|==o 698 | |___| 699 | // \\ 700 | _\\ //_ 701 | 702 | 703 | 704 | 705 | ___T_ 706 | | O O | 707 | |__u__| 708 | (m9\:::/\ 709 | /___\6 710 | |_| 711 | (ooo) 712 | 713 | 714 | 715 | 716 | .=._,=. 717 | ' (9 9) ` 718 | _)v(_ 719 | .-._/___\_.-. 720 | ; \___/ ; 721 | |_| 722 | (ooo) 723 | 724 | 725 | 726 | 727 | __i 728 | [o o] 729 | ]E[ 730 | .==|>o<|==:=L 731 | '=c|___| 732 | . \_/ . 733 | . .:::.. . 734 | 735 | 736 | 737 | 738 | .-. 739 | ._(9 9)_. 740 | (_0_) 741 | ,"|+ |". 742 | _\|+__|/_ 743 | |_|_| 744 | /_|_\ 745 | 746 | 747 | 748 | 749 | |---| 750 | |n n| 751 | |_-_| 752 | /|(\)|\ 753 | d |___| b 754 | |_|_| 755 | /_|_\ 756 | 757 | 758 | 759 | 760 | _ _,_,_ _ 761 | \( b d )/ 762 | \_E_/ 763 | .=[::+]=. 764 | ]=' [___] '=[ 765 | . /___\ . 766 | . ..:::::::. . 767 | 768 | 769 | 770 | 771 | \.===./ 772 | | - - | 773 | \_#_/ 774 | 7--|=0=|--< 775 | |___| 776 | . \_/ . 777 | . .:::.. . 778 | 779 | 780 | 781 | 782 | Y__ 783 | _/q p\_ 784 | \_O_/ 785 | .=(+++)=. 786 | o=" (___) "=o 787 | /| |\ 788 | (0) (0) 789 | 790 | 791 | 792 | 793 | .===./` 794 | /.0 0.\ 795 | "\_@_/" 796 | 7--|=0=|--< 797 | |___| 798 | [] [] 799 | /:] [:\ 800 | 801 | 802 | 803 | 804 | .---. 805 | } u u { 806 | \_r_/ 807 | .=(+++)=. 808 | o=" (___) "=o 809 | /7 [| 810 | \/7 [|_ 811 | 812 | 813 | 814 | 815 | _._._ 816 | -)q q(- 817 | \_e_/ 818 | ,"|+ |". 819 | _\|+__|/_ 820 | /7 [| 821 | \/7 [|_ 822 | 823 | 824 | 825 | 826 | .=._,=. 827 | ' ([o]) ` 828 | _)v(_ 829 | ,=|x|=. 830 | 'c/_\ 'c 831 | .'._.'. 832 | |_| |_| 833 | 834 | 835 | 836 | 837 | _ _,_,_ _ 838 | \( - - )/ 839 | \_-_/ 840 | )=o=|L88|=o=( 841 | )=o=|___|=o=( 842 | /7 [| 843 | \/7 [|_ 844 | 845 | 846 | 847 | 848 | .===./` 849 | /.- -.\ 850 | "\_n_/" 851 | .'c ."|_|". n`. 852 | '--' /_\ `--' 853 | . /___\ . 854 | . ..:::::::. . 855 | 856 | 857 | 858 | 859 | |---| 860 | |- -| 861 | |_o_| 862 | /|(\)|\ 863 | d |___| b 864 | ( ) 865 | __) (__ 866 | 867 | 868 | 869 | 870 | ___T_ 871 | | O O | 872 | |__-__| 873 | (m9\:::/\ 874 | /___\6 875 | [] [] 876 | /:] [:\ 877 | 878 | 879 | 880 | 881 | .---. 882 | } 0 0 { 883 | \_#_/ 884 | .'c ."|_|". n`. 885 | '--' /_\ `--' 886 | ]| |[ 887 | [_| |_] 888 | 889 | 890 | 891 | 892 | .---. 893 | } q p { 894 | \_-_/ 895 | }-. /\--o/\ .-{ 896 | " |___| " 897 | // \\ 898 | _\\ //_ 899 | 900 | 901 | 902 | 903 | _ _,_,_ _ 904 | \( - - )/ 905 | \_e_/ 906 | .=(+++)=. 907 | o=" (___) "=o 908 | .". 909 | |_| 910 | 911 | 912 | 913 | 914 | .===./` 915 | /.[o].\ 916 | "\_n_/" 917 | /|(\)|\ 918 | d |___| b 919 | _// \\_ 920 | /_o| |o_\ 921 | 922 | 923 | 924 | 925 | .---. 926 | } O O { 927 | \_O_/ 928 | >===]__o[===< 929 | [o__] 930 | .". 931 | |_| 932 | 933 | 934 | 935 | 936 | ,_,_, 937 | \9 9/ 938 | /_r_\ 939 | .-._/___\_.-. 940 | ; \___/ ; 941 | |_|_| 942 | /_|_\ 943 | 944 | 945 | 946 | 947 | |---| 948 | |O O| 949 | |_@_| 950 | ()ooo|\=/|ooo() 951 | |___| 952 | (_|_) 953 | (o|o) 954 | 955 | 956 | 957 | 958 | ,_,_, 959 | \6=6/ 960 | /_A_\ 961 | ()ooo|\=/|ooo() 962 | |___| 963 | |_| 964 | (ooo) 965 | 966 | 967 | 968 | 969 | |---| 970 | |[o]| 971 | |_^_| 972 | }-. /\--o/\ .-{ 973 | " |___| " 974 | (_|_) 975 | (o|o) 976 | 977 | 978 | 979 | 980 | Y__ 981 | _/p q\_ 982 | \_`_/ 983 | .=(+++)=. 984 | o=" (___) "=o 985 | _// \\_ 986 | /_o| |o_\ 987 | 988 | 989 | 990 | 991 | _ _,_,_ _ 992 | \( q q )/ 993 | \_e_/ 994 | o==|ooo|==o 995 | |___| 996 | // \\ 997 | _\\ //_ 998 | 999 | 1000 | 1001 | 1002 | \.===./ 1003 | | o o | 1004 | \_^_/ 1005 | 7--|=0=|--< 1006 | |___| 1007 | [] [] 1008 | /:] [:\ 1009 | 1010 | 1011 | 1012 | 1013 | \.===./ 1014 | | n n | 1015 | \_`_/ 1016 | .=(+++)=. 1017 | o=" (___) "=o 1018 | |_|_| 1019 | /_|_\ 1020 | 1021 | 1022 | 1023 | 1024 | _._._ 1025 | -)O O(- 1026 | \_u_/ 1027 | )=o=|L88|=o=( 1028 | )=o=|___|=o=( 1029 | / | 1030 | _\ |_ 1031 | 1032 | 1033 | 1034 | 1035 | ___T_ 1036 | | n n | 1037 | |__0__| 1038 | ,=|x|=. 1039 | 'c/_\ 'c 1040 | /7 [| 1041 | \/7 [|_ 1042 | 1043 | 1044 | 1045 | 1046 | )_( 1047 | |6=6| 1048 | |_^_| 1049 | )=o=|L88|=o=( 1050 | )=o=|___|=o=( 1051 | .'._.'. 1052 | |_| |_| 1053 | 1054 | 1055 | 1056 | 1057 | )_( 1058 | |6=6| 1059 | |_n_| 1060 | .=(+++)=. 1061 | o=" (___) "=o 1062 | .'._.'. 1063 | |_| |_| 1064 | 1065 | 1066 | 1067 | 1068 | \.===./ 1069 | | b d | 1070 | \_A_/ 1071 | o==|ooo|==o 1072 | |___| 1073 | . /___\ . 1074 | . ..:::::::. . 1075 | 1076 | 1077 | 1078 | 1079 | .-. 1080 | ._(q p)_. 1081 | (_r_) 1082 | ,"|+ |". 1083 | _\|+__|/_ 1084 | .'._.'. 1085 | |_| |_| 1086 | 1087 | 1088 | 1089 | 1090 | )_( 1091 | |n n| 1092 | |_e_| 1093 | }-. /\--o/\ .-{ 1094 | " |___| " 1095 | |_|_| 1096 | /_|_\ 1097 | 1098 | 1099 | 1100 | 1101 | ___T_ 1102 | | n n | 1103 | |__E__| 1104 | >===]__o[===< 1105 | [o__] 1106 | /7 [| 1107 | \/7 [|_ 1108 | 1109 | 1110 | 1111 | 1112 | T___ 1113 | |d d| 1114 | \_O_/ 1115 | .==|>o<|==:=L 1116 | '=c|___| 1117 | // \\ 1118 | _\\ //_ 1119 | 1120 | 1121 | 1122 | 1123 | )_( 1124 | |n n| 1125 | |_n_| 1126 | .=[::+]=. 1127 | ]=' [___] '=[ 1128 | .". 1129 | |_| 1130 | 1131 | 1132 | 1133 | 1134 | ,_,_, 1135 | \p q/ 1136 | /_0_\ 1137 | o==|ooo|==o 1138 | |___| 1139 | / | 1140 | _\ |_ 1141 | 1142 | ``` 1143 | ## Custom Bot 1144 | 1145 | This module gives you the ability to make your own ASCII Bot. 1146 | 1147 | ``` 1148 | __.--- head: 0, body: 5, legs: 9 1149 | ||| 1150 | ID: "13059" 1151 | || 1152 | ''------- mouth: 1, eyes: 3 1153 | ``` 1154 | where these numbers are the keys for the following maps: 1155 | 1156 | ```v 1157 | eyes = { 1158 | "0": "o o", 1159 | "1": "p q", 1160 | "2": "q p", 1161 | "3": "d b", 1162 | "4": "b d", 1163 | "5": "ooo", 1164 | "6": "[o]", 1165 | "7": "9 9", 1166 | "8": "6=6", 1167 | "9": "u u", 1168 | "a": "n n", 1169 | "b": "q q", 1170 | "c": "d d", 1171 | "d": "- -", 1172 | "e": "0 0", 1173 | "f": "O O", 1174 | } 1175 | 1176 | mouths = { 1177 | "0": "-", 1178 | "1": "=", 1179 | "2": "o", 1180 | "3": "O", 1181 | "4": "0", 1182 | "5": "#", 1183 | "6": "u", 1184 | "7": "v", 1185 | "8": "n", 1186 | "9": "r", 1187 | "a": "`", 1188 | "b": "^", 1189 | "c": "A", 1190 | "d": "@", 1191 | "e": "e", 1192 | "f": "E", 1193 | } 1194 | 1195 | templates = { 1196 | "0": r" ___T_ \n | o o | \n |__-__| \n /| []|\ \n ()/|___|\() \n |_|_| \n /_|_\ ", 1197 | "1": r" \.===./ \n | b d | \n \_=_/ \n o==|ooo|==o \n |___| \n .'._.'. \n |_| |_| ", 1198 | "2": r" o___o \n //0-0\\ \n |\_-_/| \n /|(\)|\ \n d |___| b \n . \_/ . \n . .:::.. . ", 1199 | "3": r" T___ \n |[o]| \n \_-_/ \n 7--|=0=|--< \n |___| \n // \\ \n _\ //_ ", 1200 | "4": r" )_( \n |ooo| \n |_#_| \n .-._/___\_.-. \n ; \___/ ; \n ( ) \n __) (__ ", 1201 | "5": r" |---| \n |6=6| \n |_o_| \n}-. /\--o/\ .-{\n \" |___| \" \n .\". \n |_| ", 1202 | "6": r" .---. \n } - - { \n \_0_/ \n .=[::+]=. \n ]=' [___] '=[ \n /| |\ \n [_] [_] ", 1203 | "7": r" Y__ \n _/o o\_ \n \_o_/ \n )=o=|L88|=o=( \n )=o=|___|=o=( \n . /___\ . \n. ..:::::::. .", 1204 | "8": r" .===. \n //d d\\ \n \_u_// \n ,=|x|=. \n 'c/_\ 'c \n /| |\ \n (0) (0) ", 1205 | "9": r" _._._ \n -)o o(- \n \_=_/ \n()ooo|\=/|ooo()\n |___| \n |_| \n (ooo) ", 1206 | "a": r" .=._,=. \n ' (q q) ` \n _)-(_ \n.'c .\"|_|\". n`.\n'--' /_\ `--'\n _// \_ \n /_o| |o_\ ", 1207 | "b": r" .-. \n ._(u u)_. \n (_-_) \n .=(+++)=. \no=\" (___) \"=o\n (_|_) \n (o|o) ", 1208 | "c": r" ,_,_, \n \9 9/ \n /_-_\ \n ,\"|+ |\". \n _\|+__|/_ \n / | \n _\ |_ ", 1209 | "d": r" .===./` \n /.n n.\ \n \"\_=_/\" \n (m9\:::/\ \n /___\6 \n [] [] \n /:] [:\ ", 1210 | "e": r" __i \n [p q] \n ]-[ \n >===]__o[===< \n [o__] \n ]| |[ \n [_| |_] ", 1211 | "f": r" _ _,_,_ _ \n \( q p )/ \n \_\"_/ \n .==|>o<|==:=L\n '=c|___| \n /7 [| \n \/7 [|_ ", 1212 | } 1213 | 1214 | ``` 1215 | 1216 | ## Acknowledgements 1217 | 1218 | I thank [`walsh9/asciibots`](https://github.com/walsh9/asciibots) who originally wrote this in JS and [`mattes/go-asciibot`](https://github.com/mattes/go-asciibot) in Go which helped me a lot inorder to port this. 1219 | 1220 | ## License 1221 | 1222 | Licensed under [MIT](LICENSE) 1223 | -------------------------------------------------------------------------------- /ascii_robot/bot.v: -------------------------------------------------------------------------------- 1 | module ascii_robot 2 | 3 | import rand 4 | 5 | pub fn random_robot() string { 6 | out := generate(random_id()) or { 7 | '' 8 | } 9 | return out 10 | } 11 | 12 | pub fn random_id() string { 13 | mut out := '' 14 | for i := 0; i < 5; i++ { 15 | out += rand.intn(16).hex() // 16 because hex 16 | } 17 | return out 18 | } 19 | 20 | pub fn must_generate(id string) string { 21 | out := generate(id) or { 22 | panic(err) 23 | } 24 | return out 25 | } 26 | 27 | pub fn generate(id string) ?string { 28 | if id.len != 5 { 29 | return error('id length must be equal to 5') 30 | } 31 | str := id.map(hex_only) 32 | if str.len != 5 { 33 | return error('id must be 5 hexadecimal characters [0-9a-f]') 34 | } 35 | mut out := '' 36 | // generate body 37 | top, _, _ := split(templates[str[0..1]]) 38 | _, center, _ := split(templates[str[1..2]]) 39 | _, _, bottom := split(templates[str[2..3]]) 40 | 41 | out += top 42 | out += center 43 | out += bottom 44 | 45 | // replace eyes 46 | out = replace(out, eyes[str[3..4]], 6, 1) 47 | // replace mouth 48 | out = replace(out, mouths[str[4..5]], 7, 2) 49 | return out 50 | } 51 | 52 | fn hex_only(r byte) byte { 53 | match r { 54 | `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` { return r } 55 | `a`, `b`, `c`, `d`, `e`, `f` { return r } 56 | else { return -1 } 57 | } 58 | } 59 | 60 | // split splits template into top, center and bottom parts 61 | fn split(template string) (string, string, string) { 62 | s := template.split(r'\n') 63 | top := s[0..3].join('\n') + '\n' 64 | center := s[3..5].join('\n') + '\n' 65 | bottom := s[5..7].join('\n') 66 | return top, center, bottom 67 | } 68 | 69 | // replace replaces body parts at position x,y 70 | fn replace(body, replace string, x, y int) string { 71 | mut lines := body.split('\n') 72 | lines[y] = lines[y][0..x] + replace + lines[y][x + replace.len..] 73 | return lines.join('\n') 74 | } 75 | -------------------------------------------------------------------------------- /ascii_robot/parts.v: -------------------------------------------------------------------------------- 1 | module ascii_robot 2 | 3 | const ( 4 | templates = { 5 | "0": r" ___T_ \n | o o | \n |__-__| \n /| []|\ \n ()/|___|\() \n |_|_| \n /_|_\ ", 6 | "1": r" \.===./ \n | b d | \n \_=_/ \n o==|ooo|==o \n |___| \n .'._.'. \n |_| |_| ", 7 | "2": r" o___o \n //0-0\\ \n |\_-_/| \n /|(\)|\ \n d |___| b \n . \_/ . \n . .:::.. . ", 8 | "3": r" T___ \n |[o]| \n \_-_/ \n 7--|=0=|--< \n |___| \n // \\ \n _\ //_ ", 9 | "4": r" )_( \n |ooo| \n |_#_| \n .-._/___\_.-. \n ; \___/ ; \n ( ) \n __) (__ ", 10 | "5": r" |---| \n |6=6| \n |_o_| \n}-. /\--o/\ .-{\n \" |___| \" \n .\". \n |_| ", 11 | "6": r" .---. \n } - - { \n \_0_/ \n .=[::+]=. \n ]=' [___] '=[ \n /| |\ \n [_] [_] ", 12 | "7": r" Y__ \n _/o o\_ \n \_o_/ \n )=o=|L88|=o=( \n )=o=|___|=o=( \n . /___\ . \n. ..:::::::. .", 13 | "8": r" .===. \n //d d\\ \n \_u_// \n ,=|x|=. \n 'c/_\ 'c \n /| |\ \n (0) (0) ", 14 | "9": r" _._._ \n -)o o(- \n \_=_/ \n()ooo|\=/|ooo()\n |___| \n |_| \n (ooo) ", 15 | "a": r" .=._,=. \n ' (q q) ` \n _)-(_ \n.'c .\"|_|\". n`.\n'--' /_\ `--'\n _// \_ \n /_o| |o_\ ", 16 | "b": r" .-. \n ._(u u)_. \n (_-_) \n .=(+++)=. \no=\" (___) \"=o\n (_|_) \n (o|o) ", 17 | "c": r" ,_,_, \n \9 9/ \n /_-_\ \n ,\"|+ |\". \n _\|+__|/_ \n / | \n _\ |_ ", 18 | "d": r" .===./` \n /.n n.\ \n \"\_=_/\" \n (m9\:::/\ \n /___\6 \n [] [] \n /:] [:\ ", 19 | "e": r" __i \n [p q] \n ]-[ \n >===]__o[===< \n [o__] \n ]| |[ \n [_| |_] ", 20 | "f": r" _ _,_,_ _ \n \( q p )/ \n \_\"_/ \n .==|>o<|==:=L\n '=c|___| \n /7 [| \n \/7 [|_ ", 21 | } 22 | 23 | eyes = { 24 | "0": "o o", 25 | "1": "p q", 26 | "2": "q p", 27 | "3": "d b", 28 | "4": "b d", 29 | "5": "ooo", 30 | "6": "[o]", 31 | "7": "9 9", 32 | "8": "6=6", 33 | "9": "u u", 34 | "a": "n n", 35 | "b": "q q", 36 | "c": "d d", 37 | "d": "- -", 38 | "e": "0 0", 39 | "f": "O O", 40 | } 41 | 42 | mouths = { 43 | "0": "-", 44 | "1": "=", 45 | "2": "o", 46 | "3": "O", 47 | "4": "0", 48 | "5": "#", 49 | "6": "u", 50 | "7": "v", 51 | "8": "n", 52 | "9": "r", 53 | "a": "`", 54 | "b": "^", 55 | "c": "A", 56 | "d": "@", 57 | "e": "e", 58 | "f": "E", 59 | } 60 | 61 | ) 62 | 63 | -------------------------------------------------------------------------------- /v.mod: -------------------------------------------------------------------------------- 1 | Module { 2 | name: 'ascii-robot' 3 | author: 'Swastik Baranwal' 4 | version: '0.0.1' 5 | repo_url: 'https://github.com/Delta456/ascii-robot' 6 | vcs: 'git' 7 | tags: ['ascii', 'robot', 'vlang', 'terminal'] 8 | description: 'ASCII Robot Generator in V' 9 | license: 'MIT' 10 | } 11 | --------------------------------------------------------------------------------