Initial Commit
This commit is contained in:
commit
d6e3823f76
22
build.zig
Normal file
22
build.zig
Normal file
|
@ -0,0 +1,22 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.build.Builder) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const mode = b.standardReleaseOptions();
|
||||
|
||||
const exe = b.addExecutable("UroAvatarGenerator", null);
|
||||
exe.addCSourceFile("src/main.cpp", &.{"-std=c++20"});
|
||||
exe.setTarget(target);
|
||||
exe.setBuildMode(mode);
|
||||
exe.linkLibCpp();
|
||||
exe.install();
|
||||
|
||||
const run_cmd = exe.run();
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
if (b.args) |args| {
|
||||
run_cmd.addArgs(args);
|
||||
}
|
||||
|
||||
const run_step = b.step("run", "Run the app");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
}
|
101
src/anims.txt
Normal file
101
src/anims.txt
Normal file
|
@ -0,0 +1,101 @@
|
|||
achoo
|
||||
aggie
|
||||
alexa
|
||||
amy
|
||||
aura
|
||||
axel
|
||||
barbra
|
||||
barrelman
|
||||
bigfoot
|
||||
bing
|
||||
birdie
|
||||
bitman
|
||||
bluepenguin
|
||||
bones
|
||||
boxman
|
||||
cartoonman
|
||||
cassius
|
||||
chang
|
||||
charlie
|
||||
chloe
|
||||
cobra
|
||||
crane
|
||||
creature
|
||||
cybort
|
||||
death
|
||||
demon
|
||||
drummajor
|
||||
dude
|
||||
elf
|
||||
elfin
|
||||
fire
|
||||
george
|
||||
glubber
|
||||
golem
|
||||
graduate
|
||||
guru
|
||||
habib
|
||||
haining
|
||||
horny
|
||||
hotep
|
||||
infinity
|
||||
jenny
|
||||
jian
|
||||
jim
|
||||
jing
|
||||
joe
|
||||
john
|
||||
joker
|
||||
jon
|
||||
julie
|
||||
kangaroo
|
||||
kiwibird
|
||||
leo
|
||||
lian
|
||||
lizard
|
||||
lmbghn
|
||||
loopy
|
||||
macaw
|
||||
mark
|
||||
mei
|
||||
mesmerist
|
||||
ming
|
||||
minotaur
|
||||
mitch
|
||||
monster
|
||||
nightglyder
|
||||
ogre
|
||||
orangutan
|
||||
paul
|
||||
pegasus
|
||||
penguin
|
||||
pilgrim
|
||||
porsche
|
||||
prince
|
||||
puffin
|
||||
quail
|
||||
rap
|
||||
ray
|
||||
roundman
|
||||
roxanne
|
||||
shamaness
|
||||
shanubia
|
||||
shred
|
||||
sienna
|
||||
simon
|
||||
somgirl
|
||||
somguy
|
||||
sonya
|
||||
spin
|
||||
sty
|
||||
sunshine
|
||||
tina
|
||||
tony
|
||||
toucan
|
||||
tre
|
||||
vwbug
|
||||
wei
|
||||
weilui
|
||||
willy
|
||||
zen
|
||||
zita
|
195
src/bods.txt
Normal file
195
src/bods.txt
Normal file
|
@ -0,0 +1,195 @@
|
|||
Gachoo
|
||||
Gaee
|
||||
Gaggie
|
||||
Galex
|
||||
Galexa
|
||||
Galien
|
||||
Gamy
|
||||
Gangel
|
||||
Gant
|
||||
Gatat
|
||||
Gaudry
|
||||
Gaura
|
||||
Gava
|
||||
Gavy
|
||||
Gaxel
|
||||
Gaxelbwl
|
||||
Gaxelwe
|
||||
Gaxelwg
|
||||
Gbanana
|
||||
Gbar
|
||||
Gbarbra
|
||||
Gbarrelman
|
||||
Gbear
|
||||
Gbigfoot
|
||||
Gbik
|
||||
Gbing
|
||||
Gbird
|
||||
Gbirdie
|
||||
Gbitman
|
||||
Gbla
|
||||
Gblb
|
||||
Gbluepenguin
|
||||
Gbob
|
||||
Gbones
|
||||
Gboxman
|
||||
Gbug
|
||||
Gbunny
|
||||
Gbxel
|
||||
Gcanman
|
||||
Gcartoonman
|
||||
Gcassius
|
||||
Gchang
|
||||
Gcharlie
|
||||
Gchas
|
||||
Gchloe
|
||||
Gcin
|
||||
Gcobra
|
||||
Gcop
|
||||
Gcrane
|
||||
Gcrea
|
||||
Gcreature
|
||||
Gcxel
|
||||
Gcybort
|
||||
Gdalek
|
||||
Gdan
|
||||
Gdeath
|
||||
Gdeer
|
||||
Gdemon
|
||||
Gdrum
|
||||
Gdrummajor
|
||||
Gdude
|
||||
Gelf
|
||||
Gelfin
|
||||
Geva
|
||||
Gevy
|
||||
Gfairy
|
||||
Gfarm
|
||||
Gfire
|
||||
Gfish
|
||||
Gfoxy
|
||||
Ggeorge
|
||||
Gglubber
|
||||
Gglyd
|
||||
Ggogo
|
||||
Ggolem
|
||||
Ggrad
|
||||
Ggraduate
|
||||
Ggun
|
||||
Ggunny
|
||||
Gguru
|
||||
Ggus
|
||||
Ghabib
|
||||
Ghag
|
||||
Ghaining
|
||||
Ghorny
|
||||
Ghotep
|
||||
Ginfinity
|
||||
Giva
|
||||
Give
|
||||
Givy
|
||||
Gjak
|
||||
Gjeanie
|
||||
Gjedi
|
||||
Gjeni
|
||||
Gjenny
|
||||
Gjian
|
||||
Gjim
|
||||
Gjin
|
||||
Gjing
|
||||
Gjoe
|
||||
Gjohn
|
||||
Gjoker
|
||||
Gjon
|
||||
Gjulie
|
||||
Gkangaroo
|
||||
Gkiwi
|
||||
Gkiwibird
|
||||
Glee
|
||||
Gleo
|
||||
Glian
|
||||
Glizard
|
||||
Glmbghn
|
||||
Glogo
|
||||
Gloopy
|
||||
Glucky
|
||||
Glynn
|
||||
Gmacaw
|
||||
Gmark
|
||||
Gmarvin
|
||||
Gmary
|
||||
Gmax
|
||||
Gmei
|
||||
Gmes
|
||||
Gmesmerist
|
||||
Gming
|
||||
Gminotaur
|
||||
Gmitch
|
||||
Gmonster
|
||||
Gmotorx
|
||||
Gmouse
|
||||
Gnightglyder
|
||||
Gogre
|
||||
Gorangutan
|
||||
Gova
|
||||
Gove
|
||||
Govy
|
||||
Gpanther
|
||||
Gpaul
|
||||
Gpegasus
|
||||
Gpenguin
|
||||
Gpilgrim
|
||||
Gpingo
|
||||
Gpiper
|
||||
Gpit
|
||||
Gplane
|
||||
Gporsche
|
||||
Gprince
|
||||
Gpuffin
|
||||
Gquail
|
||||
Grap
|
||||
Gray
|
||||
Grex
|
||||
Grod
|
||||
Grosie
|
||||
Groundman
|
||||
Groxanne
|
||||
Groy
|
||||
Gsam
|
||||
Gscorpion
|
||||
Gshamaness
|
||||
Gshanubia
|
||||
Gshred
|
||||
Gsienna
|
||||
Gsimon
|
||||
Gsmurf
|
||||
Gsmurfet
|
||||
Gsnowman
|
||||
Gsomgirl
|
||||
Gsomguy
|
||||
Gsonya
|
||||
Gspider
|
||||
Gspin
|
||||
Gstinky
|
||||
Gstrum
|
||||
Gsty
|
||||
Gsub
|
||||
Gsunshine
|
||||
Gtaur
|
||||
Gtina
|
||||
Gtony
|
||||
Gtoon
|
||||
Gtoucan
|
||||
Gtre
|
||||
Gunicorn
|
||||
Guva
|
||||
Gvette
|
||||
Gvwbug
|
||||
Gwei
|
||||
Gweilui
|
||||
Gwilly
|
||||
Gwitch
|
||||
Gwolf
|
||||
Gworm
|
||||
Gzen
|
||||
Gzita
|
315
src/main.cpp
Normal file
315
src/main.cpp
Normal file
|
@ -0,0 +1,315 @@
|
|||
#include <iostream>
|
||||
#include <fstream>
|
||||
using namespace std;
|
||||
char calcS(int);
|
||||
char calcC(int);
|
||||
void insert(string, int, string&);
|
||||
void insertC(string, string&);
|
||||
|
||||
int main() {
|
||||
srand(time(0));
|
||||
int t = 0;
|
||||
ifstream tex("tex.txt");
|
||||
ifstream file("bods.txt");
|
||||
ifstream anims("anims.txt");
|
||||
ofstream output("output.txt");
|
||||
int choice, maxsize;
|
||||
|
||||
cout << "Welcome to Urotsuki's avatar generator. Would you like to generate color avatars, or texture avatars? Enter 1 for colors, 2 for textures: ";
|
||||
while (choice != 1 && choice != 2)
|
||||
{
|
||||
cout << "Please enter 1 or 2: ";
|
||||
cin >> choice;
|
||||
}
|
||||
cout << "\nOkay. Now how many avatars do you want to generate? ";
|
||||
cin >> maxsize;
|
||||
while (t < maxsize) {
|
||||
string av = "avatar:.0ERLUMVOWIXJYKBPNH0.rwg"; // 16 parts for size, 17 for color
|
||||
string size, col, body, animstr;
|
||||
|
||||
// random animation/base body
|
||||
int p = rand() % 101;
|
||||
int p2 = 0;
|
||||
while (getline(anims, animstr)) {
|
||||
if (p2 == p) {
|
||||
if (p2 != 100)
|
||||
{
|
||||
animstr.pop_back();
|
||||
}
|
||||
av.insert(7, animstr);
|
||||
}
|
||||
p2++;
|
||||
}
|
||||
anims.clear();
|
||||
anims.seekg(0, ios::beg);
|
||||
|
||||
// insert G(body)'s, randomly selected from .txt
|
||||
int max = rand() % 16;
|
||||
for (int i = 0; i <= max; i++) {
|
||||
int k = rand() % 195;
|
||||
int k2 = 0;
|
||||
while (getline(file, body)) {
|
||||
if (k2 == k) {
|
||||
int j = rand() % 16;
|
||||
if (k2 != 194)
|
||||
{
|
||||
body.pop_back();
|
||||
}
|
||||
insert(body, j, av);
|
||||
}
|
||||
k2++;
|
||||
}
|
||||
file.clear();
|
||||
file.seekg(0, ios::beg);
|
||||
}
|
||||
|
||||
// generate and insert random sizes
|
||||
max = rand() % 16;
|
||||
for (int i = 0; i <= max; i++) {
|
||||
size = "S";
|
||||
char s;
|
||||
for (int k = 0; k < 3; k++) {
|
||||
int snum = rand() % 61;
|
||||
while (calcS(snum) == 'S' || calcS(snum) == 'C') {
|
||||
snum = rand() % 61;
|
||||
}
|
||||
s = calcS(snum);
|
||||
size += s;
|
||||
}
|
||||
int j = rand() % 16;
|
||||
insert(size, j, av);
|
||||
}
|
||||
|
||||
// generate and insert random colors
|
||||
if (choice == 1) {
|
||||
max = rand() % 17;
|
||||
for (int i = 0; i <= max; i++) {
|
||||
col = "C";
|
||||
char c;
|
||||
for (int k = 0; k < 3; k++) {
|
||||
int cnum = rand() % 64;
|
||||
while (calcC(cnum) == 'S' || calcC(cnum) == 'C') {
|
||||
cnum = rand() % 64;
|
||||
}
|
||||
c = calcC(cnum);
|
||||
col += c;
|
||||
}
|
||||
insertC(col, av);
|
||||
}
|
||||
}
|
||||
|
||||
// insert random textures from .txt
|
||||
if (choice == 2) {
|
||||
max = rand() % 17;
|
||||
for (int i = 0; i <= max; i++) {
|
||||
int k = rand() % 2152;
|
||||
int k2 = 0;
|
||||
while (getline(tex, col)) {
|
||||
if (k2 == k) {
|
||||
if (k2 != 2151)
|
||||
{
|
||||
col.pop_back();
|
||||
}
|
||||
string tt = to_string((rand() % 9) + 1);
|
||||
col.insert(1, tt);
|
||||
insertC(col, av);
|
||||
}
|
||||
k2++;
|
||||
}
|
||||
tex.clear();
|
||||
tex.seekg(0, ios::beg);
|
||||
}
|
||||
}
|
||||
|
||||
// insert characters of colors or textures so that most of body is textured
|
||||
for (int i = 0; i <= max; i++) {
|
||||
char alphaC = char(97 + i);
|
||||
string alpha;
|
||||
alpha += alphaC;
|
||||
for (int k = 0; k < 17 / (max+1); k++) {
|
||||
int j = rand() % 17;
|
||||
insert(alpha, j, av);
|
||||
}
|
||||
}
|
||||
|
||||
// output final avatar code
|
||||
if (av.size() <= 220 )
|
||||
{
|
||||
// cout << av << endl;
|
||||
if (t == 0)
|
||||
{
|
||||
output << av;
|
||||
}
|
||||
else
|
||||
{
|
||||
output << endl << av;
|
||||
}
|
||||
t++;
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
tex.close();
|
||||
anims.close();
|
||||
output.close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char calcS(int x)
|
||||
{
|
||||
char ret;
|
||||
if (x <= 9)
|
||||
{
|
||||
ret = char(48+x);
|
||||
}
|
||||
else if (x <= 35 && x > 9)
|
||||
{
|
||||
ret = char(97+x-10);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = char(65+x-36);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
char calcC(int x)
|
||||
{
|
||||
char ret;
|
||||
if (x == 0)
|
||||
{
|
||||
ret = char(45);
|
||||
}
|
||||
else if (x <= 10 && x > 0)
|
||||
{
|
||||
ret = char(48+x-1);
|
||||
}
|
||||
else if (x <= 36 && x > 10)
|
||||
{
|
||||
ret = char(97+x-11);
|
||||
}
|
||||
else if (x <= 62 && x > 36)
|
||||
{
|
||||
ret = char(65+x-37);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = char(43);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void insert(string str,int i, string &av)
|
||||
{
|
||||
string part;
|
||||
switch(i)
|
||||
{
|
||||
case 0:
|
||||
part = 'R';
|
||||
break;
|
||||
case 1:
|
||||
part = 'L';
|
||||
break;
|
||||
case 2:
|
||||
part = 'U';
|
||||
break;
|
||||
case 3:
|
||||
part = 'M';
|
||||
break;
|
||||
case 4:
|
||||
part = 'V';
|
||||
break;
|
||||
case 5:
|
||||
part = 'O';
|
||||
break;
|
||||
case 6:
|
||||
part = 'W';
|
||||
break;
|
||||
case 7:
|
||||
part = 'I';
|
||||
break;
|
||||
case 8:
|
||||
part = 'X';
|
||||
break;
|
||||
case 9:
|
||||
part = 'J';
|
||||
break;
|
||||
case 10:
|
||||
part = 'Y';
|
||||
break;
|
||||
case 11:
|
||||
part = 'K';
|
||||
break;
|
||||
case 12:
|
||||
part = 'B';
|
||||
break;
|
||||
case 13:
|
||||
part = 'P';
|
||||
break;
|
||||
case 14:
|
||||
part = 'N';
|
||||
break;
|
||||
case 15:
|
||||
part = 'H';
|
||||
break;
|
||||
case 16:
|
||||
part = ".r";
|
||||
break;
|
||||
}
|
||||
bool done = true;
|
||||
size_t found = av.find(part);
|
||||
for (int j = 0; j <= 3; j++)
|
||||
{
|
||||
if (av.at(found-j) == 'S' || av.at(found-j) == 'C')
|
||||
{
|
||||
done = false;
|
||||
}
|
||||
}
|
||||
while (done == false) {
|
||||
done = true;
|
||||
found = av.find(part, found+1);
|
||||
for (int j = 0; j <= 3; j++)
|
||||
{
|
||||
if (av.at(found-j) == 'S' || av.at(found-j) == 'C')
|
||||
{
|
||||
done = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (av.at(found+1) == 'G' && str.at(0) == 'G')
|
||||
{
|
||||
}
|
||||
else if (i == 16)
|
||||
{
|
||||
av.insert(found, str);
|
||||
}
|
||||
else
|
||||
{
|
||||
av.insert(found+1, str);
|
||||
}
|
||||
}
|
||||
|
||||
void insertC(string str, string &av)
|
||||
{
|
||||
bool done = true;
|
||||
size_t found = av.find('E');
|
||||
for (int j = 0; j <= 3; j++)
|
||||
{
|
||||
if (av.at(found-j) == 'C')
|
||||
{
|
||||
done = false;
|
||||
}
|
||||
}
|
||||
while (done == false) {
|
||||
done = true;
|
||||
found = av.find('E', found+1);
|
||||
for (int j = 0; j <= 3; j++)
|
||||
{
|
||||
if (av.at(found-j) == 'C')
|
||||
{
|
||||
done = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
av.insert(found+1,str);
|
||||
}
|
2152
src/tex.txt
Normal file
2152
src/tex.txt
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user