Vislice
Napiši program, ki se bo igral vislice. Prvi igralec naj vpiše poljubno besedo,
drugi igralec pa ima deset poskusov (vsakič vnese eno črko), da besedo ugotovi. Če je pravilnih črk v
besedi več, naj program upošteva vse. Izpis programa naj bo takle:
_ _ a _b_a po vsakem vnosu nove črke. Če beseda po desetih poskusih ni prava,
naj program izpiše: OBESEN SI.
Komentar:
Program poskusi spremeniti, tako da bo izpisal tudi, katere črke smo že poskusili.
Dobro bi bilo tudi, če ne bi delal razlik med velikimi in malimi črkami.
Program vsakič znova povpraša po novi črki, preveri, če je v vpisani besedi ta črka in na katerem mestu.
Besedo, ki jo izpisuje na vsakem koraku (s praznimi polji _ vred) hrani v tabeli. Tako lahko, ko uganeš črko, samo spremeniš tabelo na ustreznih mestih.
import javax.swing.JOptionPane;
public class Vislice {
public static void main(String[] arg) {
// preberemo besedo
String beseda = JOptionPane.showInputDialog("Vpiši besedo!");
int n = beseda.length();
String[] ugibanje = new String[n];
for (int i = 0; i < n; i++)
ugibanje[i] = "_";
boolean konec = false;
// imamo 10 poskusov
for (int i = 0; i < 10; ++i) {
String trenutni = "";
String vhod = JOptionPane
.showInputDialog("Ugani črko ali celo besedo.");
// ce smo uganili besedo
if (vhod.equals(beseda)) {
System.out.println("Bravo!!!");
konec = true;
break;
}
// ce smo vnesli samo eno crko
else if (vhod.length() == 1) {
// pogledamo, ali je ta crka v besedi
for (int j = 0; j < n; ++j) {
if (beseda.charAt(j) == vhod.charAt(0))
ugibanje[j] = vhod;
trenutni += ugibanje[j];
}
// izpisemo trenutno stanje
System.out.println(trenutni);
// ce je trenutno stanje enako besedi, koncamo
if (trenutni.equals(beseda)) {
System.out.println("Bravo!!!");
konec = true;
break;
}
}
}
if (konec == false)
System.out.println("OBESEN SI!!!");
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Vislice {
class Vislice {
static void Main(string[] args) {
//preberemo besedo
Console.Write("Vpiši besedo! ");
String beseda = Console.ReadLine();
int n = beseda.Length;
String[] ugibanje = new String[n];
for (int i = 0; i < n; i++) ugibanje[i] = "_";
Boolean konec = false;
//imamo 10 poskusov
for (int i = 0; i < 10; ++i) {
String trenutni = "";
Console.Write("Ugani črko ali celo besedo: ");
String vhod = Console.ReadLine();
//ce smo uganili besedo
if (vhod.Equals(beseda)) {
Console.WriteLine("Bravo!!!");
konec = true;
break;
}
//ce smo vnesli samo eno crko
else if (vhod.Length == 1) {
//pogledamo, ali je ta crka v besedi
for (int j = 0; j < n; ++j) {
if (beseda[j] == vhod[0]) ugibanje[j] = vhod;
trenutni += ugibanje[j];
}
//izpisemo trenutno stanje
Console.WriteLine(trenutni);
//ce je trenutno stanje enako besedi, koncamo
if (trenutni.Equals(beseda)) {
Console.WriteLine("Bravo!!!");
konec = true;
break;
}
}
}
if (konec == false) Console.WriteLine("OBESEN SI!!!");
Console.ReadKey();
}
}
}
#!C:/Python30/python
#-*-encoding: utf-8 -*-
# -*- coding: latin-1 -*-
'''
Created on 1.7.2009
@author: fajdigap
'''
#preberemo besedo
beseda = input("Vpiši besedo!")
n =len(beseda)
ugibanje = ''
for i in range(n):
ugibanje = ugibanje + "_"
konec = False
# imamo 10 poskusov
for i in range(10):
trenutni = ""
vhod = input("Ugani črko ali celo besedo.")
#ce smo uganili besedo
if (vhod == beseda):
print ("Bravo!!!")
konec = True
break
# ce smo vnesli samo eno crko
elif len(vhod) == 1:
# pogledamo, ali je ta crka v besedi
for j in range(n):
if beseda[j] == vhod[0]:
ugibanje = ugibanje[0:j] + vhod + ugibanje[j+1:n]
trenutni = trenutni + ugibanje[j]
# izpisemo trenutno stanje
print(trenutni)
#ce je trenutno stanje enako besedi, koncamo
if trenutni == beseda:
print ("Bravo!!!")
konec = True
break
if konec == False:
print ("OBESEN SI!!!")