Väänsin tälläisen koodin alkeellisilla qb-taidoillani, joten varmaan tätä saa vielä paranneltua ja lyhenneltyä yms.
Mutta siis ideahan on, että käyttäjä kirjoittaa tekstin, jonka jälkeen koodi käy sen silmänräpäyksessä läpi. Mikäli se löytää tekstistä sanastoonsa määritellyn kirosanan, se ilmoittaa siitä käyttäjälle.
Koodi löytää kirosanat jotka ovat joko erillisiä sanoja (esim. vittu) tai jotka ovat jonkin "sanan sisällä" (esim. (höpöhöpövittupööpöö). Valitettavasti sensuroituja tai pätkittyjä sanoja se ei löydä (esim. v*ttu tai vit tu tai vit-tu).
Ehkäpä kukaan ei tarvitse tätä juuri kirosanojen etsimiseen, mutta jos jonkun tarvitsee saada ohjelmaansa toiminto hakemaan tietyntyyppisiä sanoja/merkkijonoja niin koodin muokkaaminen on keksitty ja käyttäminen vapaata ;).
Pistäkääpä kommenttia ja kertokaa myös, onko joku saanut värkättyä täysin erehtymättömän kirosananetsijän (huomaa myös pätkityt ja sensuroidut sanat). :)
'T?m? koodi tarkistaa k?ytt?j?n kirjoittman tekstin etsien siit? kirosanoja 'Tarkistuksen lopuksi koodi ilmoittaa, l?ytyik? kirosanoja vai ei. Koodi 'osaa etsi? kirosanoja, jotka ovat joko kokonaisia sanoja (esim. "vittu") 'tai jotka ovat tavallaan kirjainten v?liss? (esim. "h?k?l?k?vittuh?p?h?p?") ' sensuroituja kirosanoja (esim. "v*ttu") tai p?tkittyj? kirosanoja (esim. '"vit-tu" tai "vit tu") se ei valitettavasti l?yd? :(. Mutta kyll? t?m? 'mielest?ni aika hyvin "bongaa" kirosanoja. Omia kirosanoja voi lis?t? 'kohdassa "seuraavakirosana:". CLS INPUT "Kirjoita analysoitava teksti: ", teksti$ seuraavasana: sana$ = "" kiromerkki = 1 GOTO seuraavakirosana tarkista: DO merkki = merkki + 1 merkki$ = LCASE$(MID$(teksti$, merkki, 1)) IF merkki$ = MID$(kirosana$, kiromerkki, 1) THEN 'ohjelma huomaa tekstiss? kirjaimen, joka saattaa kuulua kirosanaan sana$ = sana$ + merkki$ kiromerkki = kiromerkki + 1 ELSE 'mik?li ohjelma on aiemmin ep?illyt jotain sanaa, joka ei olekaan kirosana, se havaitsee nyt virheens? 'ja est?? bugin, joka saattaisi p??st? l?pi esim. sanan "vitvittu" IF kiromerkki > 1 THEN kiromerkki = 1 sana$ = "" merkki = merkki - 1 END IF END IF IF LCASE$(sana$) = kirosana$ THEN 'ohjelma huomaa tekstiss? kirosanan ja huomauttaa siit? PRINT "Lause sis?lt?? yhden tai useamman kirosanan." SLEEP END END IF LOOP UNTIL merkki = LEN(teksti$) merkki = 0 seuraavakirosana: 'katsotaan, mit? kirosanaa haetaan tekstist? seuraavaksi kirosanojenmaara = 10 ' muista aina muuttaa t?t? lukua, mik?li lis??t/poistat kirosanoja!! kirosana = kirosana + 1 IF kirosana = 1 THEN kirosana$ = "vittu" IF kirosana = 2 THEN kirosana$ = "saatana" IF kirosana = 3 THEN kirosana$ = "perkele" IF kirosana = 4 THEN kirosana$ = "paska" IF kirosana = 5 THEN kirosana$ = "jumalauta" IF kirosana = 6 THEN kirosana$ = "helvetti" IF kirosana = 7 THEN kirosana$ = "fuck" IF kirosana = 8 THEN kirosana$ = "shit" IF kirosana = 9 THEN kirosana$ = "wtf" IF kirosana = 10 THEN kirosana$ = "vitu" IF kirosana < kirosanojenmaara + 1 THEN 'ohjelma tarkistaa, onko sen tarkastettava viel? jokin kirosana/jotkin kirosanat. 'jos on, se hypp?? tarkistamaan niit? sana$ = "" kiromerkki = 1 GOTO tarkista ELSE 'Mik?li tekstist? on kaikki kirosanat tarkistettu, eik? mit??n ole l?ytynyt, 'ohjelma lopettaa tarkistuksen ja ilmoittaa, ettei mit??n l?ytynyt PRINT "Lauseesta ei l?ytynyt kirosanoja." PRINT LCASE$("Vittu") SLEEP END END IF 'Mikäli käytät tätä koodia jossakin, niin olisi kiva (mutta ei välttämätöntä) jos laittaisit nimeni (Jare) ja osoitteeni (www.kpelit.se8.org) johonkin kohtaan ohjelmaa/peliä/kommenttina sen koodia. Joo.
Kirosanojen etsiminen on vaikeaa, minkä vuoksi on hyvä, että ohjelma pelkästään huomauttaa epäillystä kirosanasta käyttäjälle eikä koeta poistaa sitä. Suurimpana vaikeutena on tietää, onko pitemmän sanan osana oleva "kirosana" kirosana. Esim. lause "Muuta ei tarvittu." ei toki ole kiroilua...
Kirosanat olisi kätevintä tallentaa taulukkoon, niin ei tarvitsisi tuota "If kirosana = .."-ketjua. Parilla pikku tempulla pääsisi helposti eroon myös GOTO:sta ja rivilaabeleista. Sinänsä kätevä etsijä, mutta eikös QB:ssä ole myös INSTR-funktio, joka hoitaisi tuon?
Edit: Alkuperäisen QB:n käyttäjälle tuo tapa on kyllä hyvä.
Joo, varmaan olisikin kätevää.. Sääli vain näitä alkeellisia qb:n taitojani (en tiedä paljon mitään taulukoista tai INSTR:stä)...
Sovittu. :D ihan hyvä qb:n käyttäjille joop.
Tosiaan en edes tullut ajatelleeksi tuota tehdessäni näitä "kirosanan sisältäviä" ei-kirosanoja :). (kuten siis yllä oleva "Sovittu").
Ripaska on tanssi.
Antti Laaksonen kirjoitti:
Esim. lause "Muuta ei tarvittu." ei toki ole kiroilua...
Noin tekee RuneScapekin, paitsi että se sensuroi koko sanan "tarvittu", ja silti mä pelaan (harvakseltaan) sitä.
EDIT: Vähän tyhmää näin vanhaan vinetä, mutta en pelaa enää :)
Eikö RuneScape ole enkunkielinen, vai ymmärtääkö se suomenkielisetkin kirosanat?
Ymmärtää sen karvakolmion nimityksen ja sitten sen ukkosenjumalan (ukkosenjumalista en ole varma). Mutta in engelsmann se ymmärtää kyllä (esim. uloste enklanniksi) ym.
"paska" ei aina ole kirosana. eikö tuon sais jotenki lyhennettyä.
tämä on tarpeellinen keskustelupalstoilla ymsp saattaa joillaki alkaa *sisälsi 1 tai useamman kirosanan*ttaa.
Ulkomaalaisilla voi olla nimenä suomalainen kirosana, jonka vuoksi automaattinen sensurointijärjestelmä voi olla vaikea tehdä. Esimerkiksi https://fi.wikipedia.org/wiki/Pavel_Paska ja https://fi.wikipedia.org/wiki/Edo_Pillu .
Ei siinä tarvitse edes eri kieliä sekoittaa että automaattisensurointi alkaa kusta. Yksi englanninkielinen klassikko"sievistely" on peli Buttbuttins Creed :D
Jaaha, vieläkö tää mun "koodivinkki" on elossa? :D Tuli sähköpostiin ilmoitus kommenteista. Hyvä jos kolmetoista vuotta vanha koodi vielä saa keskustelua aikaan :D.
Aihe on jo aika vanha, joten et voi enää vastata siihen.