Untitled
unknown
plain_text
2 years ago
25 kB
5
Indexable
//POGODI CIFRE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Kreiranje brojeva na serverskoj strani-pogodi cifre, pise su inicijalizaciji sfe
tblBrojevi.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if(Kontroler.getInstanca().getBrojevi().size()>=3)
{
JOptionPane.showMessageDialog(null, "Uneli ste 3 broja");
}
else{
int red=e.getFirstRow();
int kolona=e.getColumn();
TableModel model=(TableModel) e.getSource();
if(model.getValueAt(red, kolona)!=null)
{
int vrednost=(int) model.getValueAt(red, kolona);
Broj broj=new Broj(kolona, red, vrednost);
boolean postoji=Kontroler.getInstanca().postoji(broj);
if(postoji)
{
model.setValueAt(null, red, kolona);
JOptionPane.showMessageDialog(null, "Broj je vec unet");
}
else
{
Kontroler.getInstanca().dodajBroj(broj);
if(Kontroler.getInstanca().getBrojevi().size()==3)
{
btnPokreniServer.setEnabled(true);
}
}
}
}
}
});
//Biranje brojeva na klijentskoj strani na tbl mouseClicked
private int brojPokusaja=0;//Nalazi se iznad inicijalizacije
private int brojPogodjenih=0;//Da bi se znalo da li je pobedio
if(brojPokusaja<5)
{
JTable tabela=(JTable) evt.getSource();
Point point=evt.getPoint();
int red=tabela.rowAtPoint(point);
int kolona=tabela.columnAtPoint(point);
if(red!=-1 && kolona!=-1)
{
System.out.println("Koordinate "+red+" "+kolona);
Broj broj=new Broj(kolona, red, -1);
KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.POGODI_BROJ, broj);
Komunikacija.getInstanca().posaljiZahtev(kz);
ServerskiOdgovor so=Komunikacija.getInstanca().primiOdgovor();
Broj br1=(Broj) so.getOdgovor();
//TableModel model=(TableModel) evt.getSource();
if(br1==null)
{
//model
tabela.setValueAt(-1, red, kolona);
}
else
{
//model
tabela.setValueAt(br1.getVrednost(), br1.getRed(), br1.getKolona());
brojPogodjenih++;
if(brojPogodjenih==3)
{
JOptionPane.showMessageDialog(null, "Pobedili ste");
this.dispose();
}
}
brojPokusaja++;
}
}
else
{
JOptionPane.showMessageDialog(null, "Izgubili ste");
this.dispose();
}
//Kontroler
private List<User> admini=new ArrayList<>();
private List<Broj> brojevi=new ArrayList<>();
private User ulogovani=null;//Polja
public void dodajBroj(Broj broj) {
brojevi.add(broj);
System.out.println(brojevi);
}
public boolean postoji(Broj broj) {
for(Broj br: brojevi)
{
if(br.getVrednost()==broj.getVrednost())
{
return true;
}
}
return false;
}
//BINGO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
private int rb;
private String kombinacija;
private int brojPogodjenihNaMestu;
private int brojPogodjenihVanMesta;
//private int rezultat;
private int id;
private Date datumVreme;
private String dobitnaKombinacija;
private int brojPokusaja;
private String rezultat;//Pobedio, ili izgubio
private List<Igra> igra;//Nema u bazi
//DBBroker
public void sacuvajIgru(RezultatIgre rezultat) {
int idRezultata=-1;
try {
String upit="INSERT INTO rezultat(datumVreme, dobitnaKombinacija, brojPokusaja, rezultat) VALUES(?, ?, ?, ?)";
PreparedStatement ps=Konekcija.getInstanca().getKonekcija().prepareStatement(upit, Statement.RETURN_GENERATED_KEYS);
java.sql.Timestamp datumTS=new java.sql.Timestamp(rezultat.getDatumVreme().getTime());
ps.setTimestamp(1, datumTS);
ps.setString(2, rezultat.getDobitnaKombinacija());
ps.setInt(3, rezultat.getBrojPokusaja());
ps.setString(4, rezultat.getRezultat());
ps.executeUpdate();
ResultSet rs=ps.getGeneratedKeys();
if(rs.next())
{
idRezultata=rs.getInt(1);
}
String upit1="INSERT INTO igra(datumVreme, dobitnaKombinacija, brojPokusaja, rezultat) VALUES(?, ?, ?, ?)";
PreparedStatement ps1=Konekcija.getInstanca().getKonekcija().prepareStatement(upit1);
for (Igra igra: rezultat.getIgra()) {
ps1.setString(1, igra.getKombinacija());
ps1.setInt(2, igra.getBrojPogodjenihNaMestu());
ps1.setInt(3, igra.getBrojPogodjenihVanMesta());
ps1.setInt(4, idRezultata);
ps1.addBatch();
}
ps1.executeBatch();
Konekcija.getInstanca().getKonekcija().commit();
} catch (SQLException ex) {
Logger.getLogger(DBBroker.class.getName()).log(Level.SEVERE, null, ex);
}
}
//Nit Server
private boolean kraj=false;
private JLabel lblBroj1;
private JLabel lblBroj2;
private JLabel lblBroj3;
private JLabel lblBroj4;
public Nit(JLabel lblBroj1, JLabel lblBroj2, JLabel lblBroj3, JLabel lblBroj4) {
this.lblBroj1 = lblBroj1;
this.lblBroj2 = lblBroj2;
this.lblBroj3 = lblBroj3;
this.lblBroj4 = lblBroj4;
}
@Override
public void run() {
while(!kraj)
{
int broj1=(int) Math.round(Math.random()*5);
int broj2=(int) Math.round(Math.random()*5);
int broj3=(int) Math.round(Math.random()*5);
int broj4=(int) Math.round(Math.random()*5);
lblBroj1.setText(broj1+"");
lblBroj2.setText(broj2+"");
lblBroj3.setText(broj3+"");
lblBroj4.setText(broj4+"");
try {
Thread.sleep(200);
} catch (InterruptedException ex) {
Logger.getLogger(Nit.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void zaustaviNit() {
System.out.println("Nit je prekinuta");
kraj=true;
interrupt();
}
//ModelTabeleIgre
public List<Igra> getListaIgre() {
return listaIgre;
}
void dodajIgri(Igra igra) {
int rb=listaIgre.size()+1;
igra.setRb(rb);
listaIgre.add(igra);
fireTableDataChanged();
}
//Kontroler
private static Kontroler instanca;
private DBBroker db;
private ServerskaForma sf;
private List<Igra> igre;
private RezultatIgre rezultat;
public Kontroler() {
db=new DBBroker();
igre=new ArrayList<>();
rezultat=new RezultatIgre(-1, new Date(), null, -1, "izgubio", igre);
}
public static Kontroler getInstanca()
{
if(instanca==null)
{
instanca=new Kontroler();
}
return instanca;
}
public void sacuvajIgru() {
rezultat.setDobitnaKombinacija(sf.vratiKombinaciju());
rezultat.setBrojPokusaja(igre.size());
db.sacuvajIgru(rezultat);
}
public Igra pogadjaj(Igra igra) {
if(igre.size()>5)
{
return igra;
}
String kombinacijuNaServeru=sf.vratiKombinaciju();
String kombinacijaNaKlijentu=igra.getKombinacija();
int brojacNaMestu=0;
int brojacVanMesta=0;
String[] niz1=kombinacijuNaServeru.split("-");
String[] niz2=kombinacijaNaKlijentu.split("-");
if(niz1[0].equals(niz2[0]))
{
brojacNaMestu++;
}
else
{
if(kombinacijaNaKlijentu.contains(niz1[0]))
{
brojacVanMesta++;
}
}
if(niz1[1].equals(niz2[1]))
{
brojacNaMestu++;
}
else
{
if(kombinacijaNaKlijentu.contains(niz1[1]))
{
brojacVanMesta++;
}
}
if(niz1[2].equals(niz2[2]))
{
brojacNaMestu++;
}
else
{
if(kombinacijaNaKlijentu.contains(niz1[2]))
{
brojacVanMesta++;
}
}
if(niz1[3].equals(niz2[3]))
{
brojacNaMestu++;
}
else
{
if(kombinacijaNaKlijentu.contains(niz1[3]))
{
brojacVanMesta++;
}
}
igra.setBrojPogodjenihNaMestu(brojacNaMestu);
igra.setBrojPogodjenihVanMesta(brojacVanMesta);
igre.add(igra);
if(brojacNaMestu==4)
{
rezultat.setRezultat("pobedio");
}
return igra;
}
public void setSf(ServerskaForma sf) {
this.sf = sf;
}
public List<Igra> getIgre() {
return igre;
}
public void setIgre(List<Igra> igre) {
this.igre = igre;
}
public RezultatIgre getRezultat() {
return rezultat;
}
public void setRezultat(RezultatIgre rezultat) {
this.rezultat = rezultat;
}
//btnPosaljiKombinaciju na klijentskoj formi
brojPokusaja++;
if(brojPokusaja<=6)
{
String kombinacija=lblBroj1.getText()+"-"+lblBroj2.getText()+"-"+lblBroj3.getText()+"-"+lblBroj4.getText();
Igra igra=new Igra(-1, kombinacija, -1, -1);
KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.POGADJAJ, igra);
Komunikacija.getInstanca().posaljiZahtev(kz);
ServerskiOdgovor so=Komunikacija.getInstanca().primiOdgovor();
igra=(Igra) so.getOdgovor();
lblBrojPogodjenihNaMestu.setText(igra.getBrojPogodjenihNaMestu()+"");
lblBrojPogodjenihVanMesta.setText(igra.getBrojPogodjenihVanMesta()+"");
ModelTabeleIgra mti=(ModelTabeleIgra) tblIgra.getModel();
mti.dodajIgri(igra);
}
else
{
JOptionPane.showMessageDialog(this, "Nemate vise pokusaja na raspolaganju");
}
// VESALA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//btnPokreniIgru na serverskoj formi Kontroler.getInstanca().setSf(this); ---- KontrolerK.getInstanca().setKf(this);
List<ObradaKlijentskihZahteva> klijenti=Kontroler.getInstanca().getKlijenti();
if(klijenti.size()==2)
{
odabranaRec=(String) cmbOdaberiRec.getSelectedItem();
Kontroler.getInstanca().setOdabranaRec(odabranaRec);
txtSlovo1.setText(odabranaRec.charAt(0)+"");
txtSlovo2.setText(odabranaRec.charAt(1)+"");
txtSlovo3.setText(odabranaRec.charAt(2)+"");
txtSlovo4.setText(odabranaRec.charAt(3)+"");
txtSlovo5.setText(odabranaRec.charAt(4)+"");
//Server mora da obavesti klijente da je igra pocela
for(ObradaKlijentskihZahteva k: klijenti)
{
k.obavestiKlijenta(Operacije.POCELA_IGRA, null);
}
}
else
{
JOptionPane.showMessageDialog(null, "Cekaju se 2 klijenta");
}
//Dodatak za pokreni server
Socket s = serverskiSoket.accept();
broj++;
System.out.println("KLIJENT JE POVEZAN BROJ "+broj);
ObradaKlijentskihZahteva nit = new ObradaKlijentskihZahteva(s,broj);
Kontroler.getInstance().getKlijenti().add(nit);
nit.start();
//Obrada klijentskih zahteva dodatak
private int brojIgraca; //prvi ili drugi
private int brojPokusaja=0;
private int brojPogodjeni=0;
public ObradaKlijentskihZahteva(Socket s,int brojIgraca) {
this.s = s;
this.brojIgraca = brojIgraca;
}
//Obrada klijentskih zahteva dodatak
public void obavestiKlijenta(int operacije, Object odgovor) {
ServerskiOdgovor so=new ServerskiOdgovor();
so.setOperacije(operacije);
so.setOdgovor(odgovor);
posaljiOdgovor(so);
}
//Kontroler Server
private List<String> zadateReci = new ArrayList<>();
private String odabranaRec;
private int brojPogodaka=0;
private static Kontroler instance;
private List<ObradaKlijentskihZahteva> klijenti = new ArrayList<>();
private ServerskaForma sf;
private Kontroler() {
zadateReci.add("PETAO");
zadateReci.add("MARKO");
zadateReci.add("PETAR");
zadateReci.add("JANKO");
zadateReci.add("VANJA");
}
public static Kontroler getInstance() {
if (instance == null) {
instance = new Kontroler();
}
return instance;
}
public List<String> getZadateReci() {
return zadateReci;
}
public void setZadateReci(List<String> zadateReci) {
this.zadateReci = zadateReci;
}
public String getOdabranaRec() {
return odabranaRec;
}
public void setOdabranaRec(String odabranaRec) {
this.odabranaRec = odabranaRec;
}
public int brojPogodjenih(Slovo slovo) {
List<Slovo> slova = new ArrayList<>();
int brojac=0;
char karakter = slovo.getSlovo();
for(int i=0;i<odabranaRec.length();i++){
if(odabranaRec.charAt(i)==karakter){
Slovo novoSlovo = new Slovo(i+1,karakter);
slova.add(novoSlovo);
brojPogodaka++;
brojac++;
//slovo.setPozicija(i+1);
}
}
if(slova.size()==0){
slova.add(slovo);//pozicija==-1
}
for (ObradaKlijentskihZahteva k : klijenti) {
k.obavestiKlijenta(Operacije.POGADJAJ,slova);
}
return brojac;
}
public void proveraKrajaIgre( ) {
String poruka="";
if(brojPogodaka==5){
if(klijenti.get(0).getBrojPogodjeni()>klijenti.get(1).getBrojPogodjeni()){
poruka = "POBEDIO IGRAC 1";
}else{
poruka = "POBEDIO IGRAC 2";
}
}else{
if( klijenti.get(0).getBrojPokusaja()>=10 && klijenti.get(1).getBrojPokusaja()>=10){
poruka = "KOMP JE POBEDIO";
}
}
if(!poruka.isEmpty() || !poruka.equals("")){
klijenti.get(0).obavestiKlijenta(Operacije.KRAJ_IGRE,poruka);
klijenti.get(1).obavestiKlijenta(Operacije.KRAJ_IGRE,poruka);
sf.prikaziPorukuKrajIGre(poruka);
}
}
public List<ObradaKlijentskihZahteva> getKlijenti() {
return klijenti;
}
public void setKlijenti(List<ObradaKlijentskihZahteva> klijenti) {
this.klijenti = klijenti;
}
public int getBrojPogodaka() {
return brojPogodaka;
}
public void setBrojPogodaka(int brojPogodaka) {
this.brojPogodaka = brojPogodaka;
}
public ServerskaForma getSf() {
return sf;
}
public void setSf(ServerskaForma sf) {
this.sf = sf;
}
public void osveziLabeleNaFormi() {
sf.osveziLabeleNaFormi();
}
//Kontroler Klijent
private static Kontroler instance;
private KlijentskaForma kf;
private Kontroler() {
}
public static Kontroler getInstance() {
if(instance==null){
instance= new Kontroler();
}
return instance;
}
public KlijentskaForma getKf() {
return kf;
}
public void setKf(KlijentskaForma kf) {
this.kf = kf;
}
public void pocelaIgra() {
kf.pocelaIgra();
}
public void postaviSlovoPokusaj(List<Slovo> slova) { //(2,A) (4,A)
if(slova.get(0).getPozicija()==-1){
kf.nijePogodjeno();
}else{
kf.jestePogodjeno();
}
for (Slovo s : slova) {
kf.postaviSlovoPokusaj(s);
}
}
public void krajIgre(String poruka) {
kf.krajIgre(poruka);
}
//btnPogadjaj na klijentskoj formi
brojPokusaja++;
lblBrojPokusaja.setText(10-brojPokusaja+"");
if(brojPokusaja>10)
{
JOptionPane.showMessageDialog(this, "Nemate vise pokusaja");
btnPogadjaj.setEnabled(false);
return;
}
String slovoTekst=txtUnesiSlovo.getText();
char slovo=Character.toUpperCase(slovoTekst.charAt(0));
Slovo s=new Slovo(-1, slovo);
if(pokusanaSlova.contains(slovo))
{
JOptionPane.showMessageDialog(this, "Vec je iskorisceno to slovo");
return;
}
KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.POGADJAJ, s);
Komunikacija.getInstanca().posaljiZahtev(kz);
//PostaviSlovoPokusaj f-ja
if(!pokusanaSlova.contains(slovo.getSlovo()))
{
pokusanaSlova.add(slovo.getSlovo());
}
pokusanaSlova.add(slovo.getSlovo());
slovoPokusaj=slovo;
if(slovoPokusaj.getPozicija()==-1)
{
}
else
{
brojPogodjenih++;
if(slovoPokusaj.getPozicija()==1)
{
txtSlovo1.setText(slovoPokusaj.getSlovo()+"");
} ...
}
//ObradaKlijentskihZahteva ima samo KlijentskiZahtev kz=primiZahtev();
case Operacije.POGADJAJ:
int brojSlova=Kontroler.getInstanca().brojPogodjenihSlova((Slovo)kz.getParam());
brojPogodjenih+=brojSlova;
brojPokusaja++;
Kontroler.getInstanca().proveraKrajaIgre();
break;
//Komunikacija dodatak
ServerskiOdgovor so=primiOdgovor();
switch(so.getOperacije())
{
case Operacije.POCELA_IGRA:
KontrolerK.getInstanca().pocelaIgra();
break;
case Operacije.POGADJAJ:
KontrolerK.getInstanca().postaviSlovoPokusaj((List<Slovo>)so.getOdgovor());
break;
case Operacije.KRAJ_IGRE:
KontrolerK.getInstanca().krajIgre((String)so.getOdgovor());
break;
//CET!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Prikaz celog teksta poruke tblMouseClicked
JTable tabelaPoruka=(JTable) evt.getSource();
Point p=evt.getPoint();
int red=tabelaPoruka.rowAtPoint(p);
ModelTabelePoruka mtp=(ModelTabelePoruka) tblPoruke.getModel();
String tekst=mtp.getListaPoruka().get(red).getTekst();
JOptionPane.showMessageDialog(null, tekst);
//Kontroler
private static Kontroler instanca;
private DBBroker db;
private List<User> trenutnoUlogovaniKorisnici=new ArrayList<>();
private Admin admin;//Da ne moramo da ga prosledjujemo preko konstruktora forme, vec preko metode za login
public Kontroler() {
db=new DBBroker();
}
public static Kontroler getInstanca()
{
if(instanca==null)
{
instanca=new Kontroler();
}
return instanca;
}
public boolean login(Admin admin1) {
admin=db.login(admin1);
if(admin==null)
{
return false;
}
return true;
}
public boolean proveriKorisnickoIme(String korisnickoIme) {
return db.proveriKorisnickoIme(korisnickoIme);
}
public boolean unesiKorisnika(String korisnickoIme, String lozinka) {
return db.unesiKorisnika(korisnickoIme, lozinka);
}
public List<Poruka> vratiPoruke() {
return db.vratiPoruke();
}
public User loginUser(User user) {
User u=db.loginUser(user);
if(!trenutnoUlogovaniKorisnici.contains(u))
{
trenutnoUlogovaniKorisnici.add(u);
}
return u;
}
public void posaljiSvima(Poruka poruka) {
db.posaljiSvima(poruka);
}
public void posaljiJednom(Poruka poruka) {
db.posaljiJednom(poruka);
}
public Admin getAdmin() {
return admin;
}
public void setAdmin(Admin admin) {
this.admin = admin;
}
public List<User> getTrenutnoUlogovaniKorisnici() {
return trenutnoUlogovaniKorisnici;
}
public void setTrenutnoUlogovaniKorisnici(List<User> trenutnoUlogovaniKorisnici) {
this.trenutnoUlogovaniKorisnici = trenutnoUlogovaniKorisnici;
}
//DBBroker login
public Admin login(Admin admin) {
Admin a=null;
try {
String upit="SELECT * FROM admin WHERE korisnickoIme=? AND lozinka=?";
PreparedStatement ps=Konekcija.getInstanca().getKonekcija().prepareStatement(upit);
ps.setString(1, admin.getUsername());
ps.setString(2, admin.getLozinka());
ResultSet rs=ps.executeQuery();
if(rs.next())
{
int adminID=rs.getInt("adminId");
String ime=rs.getString("ime");
String prezime=rs.getString("prezime");
a=new Admin(adminID, admin.getUsername(), admin.getLozinka(), ime, prezime);
System.out.println("Admin "+a);
return a;
}
} catch (SQLException ex) {
Logger.getLogger(DBBroker.class.getName()).log(Level.SEVERE, null, ex);
}
return a;
}
//PopuniTabelu
KlijentskiZahtev kz=new KlijentskiZahtev(Operacije.VRATI_ULOGOVANE_KORISNIKE, null);
Komunikacija.getInstanca().posaljiZahtev(kz);
ServerskiOdgovor so=Komunikacija.getInstanca().primiOdgovor();
List<User> listaKorisnika=(List<User>) so.getOdgovor();
ModelTabeleKorisnici mtk=new ModelTabeleKorisnici(listaKorisnika);
tblKorisnici.setModel(mtk);
//ZA SVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Izvlacenje i property fajla
Properties probaj=new Properties();
try {
probaj.load(new FileInputStream("Probaj1.properties"));
} catch (Exception ex) {
Logger.getLogger(Proba.class.getName()).log(Level.SEVERE, null, ex);
}
Double sr=Double.parseDouble(probaj.getProperty("SREDNJI_KURS_NBS"));
System.out.println("Srednji kurs je "+sr);
//Da se server pokrene kao konzolna aplikacija
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("Uneti dozvoljen broj klijenata");
int limit=scanner.nextInt();
Kontroler.getInstanca().setLimit(limit);
PokreniServer ps=new PokreniServer();
ps.start();
}
//Pretvaranje iz Date u String
dateFormat.format(nastavnik.getDatumOd());
//Pretvaranje iz Stringa u Date
s.parse(dateFormat.getTime());
//Pretvaraje sql u util datum java.sql.Date
datumSQL=rs.getDate("datum");
java.util.Date datum=new java.util.Date(datumSQL.getTime());
//Validacija forme
//Korisnicko ime samo slova
boolean svaSlova=korisnickoIme.matches("[a-zA-Z]+");
//Lozinka mora da sadrzi i cifru i slovo
boolean imaCifru=lozinka.matches(".*[0-9].*");
boolean imaSlovo=lozinka.matches(".*[a-zA-Z].*");
//Korisnicko ime mora da bude jedinstveno
boolean jedinstveno=Kontroler.getInstanca().proveriKorisnickoIme(korisnickoIme);
}Editor is loading...
Leave a Comment