Advertisement
Guest User

mar

a guest
Jan 27th, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.61 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.event.*;
  3. import java.awt.*;
  4. import java.io.*;
  5.  
  6. class Model{
  7. char tab[][] = new char[10][10];
  8. }
  9. public class GIdoOTHELLO extends JFrame{
  10. int wciskk=1;
  11. Model model = new Model();
  12. /*DEKLARACJA PANELI i PODZIAL NA PANEL WYSWIETLAJACY PLANSZE, PANEL STERUJACY oraz PANEL TEKSTOWY*/
  13. JPanel plansza = new JPanel();
  14. JPanel menu = new JPanel();
  15. JTextArea tekst = new JTextArea();
  16.  
  17. /*DEKLARACJA PRZYCISKOW*/
  18. JButton help = new JButton("Pomoc");
  19. JButton prev = new JButton("Cofnij");
  20. JButton next = new JButton("Dalej");
  21. JButton tab[][] = new JButton[12][12];//tablica planszy
  22.  
  23. JButton load = new JButton("Wczytaj");
  24. JButton save = new JButton("Zapisz");
  25. JButton bialy = new JButton("Bialy");
  26. JButton czarny = new JButton("Czarny");
  27. JButton koniec = new JButton("Sprawdz");
  28.  
  29. /*DEKLARACJA POZOSTALYCH ELEMENTOW*/
  30. JTextField blad = new JTextField(20);
  31. JTextField name = new JTextField(10);
  32.  
  33. public FINISH finish = new FINISH();
  34.  
  35. public GIdoOTHELLO(){
  36. /*NADANIE TYTULU*/
  37. setTitle("OTHELLO stworzone przez Michal Gorski 224689");
  38. /*DEKLARACJA KONTENERA*/
  39. Container ct = getContentPane();
  40. ct.setLayout(new GridLayout(1,3));
  41. ct.add(plansza);
  42. ct.add(menu);
  43. ct.add(tekst);
  44.  
  45.  
  46.  
  47. /*WYPELNIENIE PLANSZY*/
  48. int i,j;
  49. plansza.setLayout(new GridLayout(10,10));
  50. for( i=1;i<11;i++){
  51. for( j=1;j<11;j++){
  52. tab[i][j] = new JButton("");
  53. if((i+j) % 2 == 0){
  54. (tab[i][j]).setBackground(Color.magenta);
  55. }else{
  56. (tab[i][j]).setBackground(Color.magenta);
  57. }
  58. plansza.add(tab[i][j]);
  59. (tab[i][j]).addActionListener(new ZAZNACZ(i,j));
  60. }
  61. }
  62. /*WYPELNIENIE BOKOW*/
  63.  
  64. for(i=0;i<11;i++){
  65. tab[i][0]= new JButton("");
  66. (tab[i][0]).setBackground(Color.magenta);
  67. }
  68.  
  69. for(j=0;j<11;j++){
  70. tab[0][j]= new JButton("");
  71. (tab[0][j]).setBackground(Color.magenta);
  72. }
  73. for(i=0;i<11;i++){
  74. tab[i][11]= new JButton("");
  75. (tab[i][11]).setBackground(Color.magenta);
  76. }
  77. for(j=0;j<11;j++){
  78. tab[11][j]= new JButton("");
  79. (tab[11][j]).setBackground(Color.magenta);
  80. }
  81.  
  82. (tab[5][1]).setBackground(Color.black);
  83. (tab[5][2]).setBackground(Color.black);
  84. (tab[4][3]).setBackground(Color.black);
  85. (tab[4][4]).setBackground(Color.black);
  86. (tab[4][5]).setBackground(Color.black);
  87. (tab[6][5]).setBackground(Color.black);
  88. (tab[8][6]).setBackground(Color.black);
  89. (tab[5][7]).setBackground(Color.black);
  90. (tab[4][9]).setBackground(Color.black);
  91. (tab[4][10]).setBackground(Color.black);
  92.  
  93.  
  94. (tab[2][3]).setBackground(Color.white);
  95. (tab[2][7]).setBackground(Color.white);
  96. (tab[3][5]).setBackground(Color.white);
  97. (tab[4][7]).setBackground(Color.white);
  98. (tab[6][3]).setBackground(Color.white);
  99. (tab[6][7]).setBackground(Color.white);
  100. (tab[6][9]).setBackground(Color.white);
  101. (tab[7][1]).setBackground(Color.white);
  102. (tab[7][4]).setBackground(Color.white);
  103. (tab[7][8]).setBackground(Color.white);
  104. (tab[8][2]).setBackground(Color.white);
  105. (tab[8][3]).setBackground(Color.white);
  106. (tab[8][8]).setBackground(Color.white);
  107. (tab[9][7]).setBackground(Color.white);
  108. (tab[9][10]).setBackground(Color.white);
  109.  
  110.  
  111. /*WYPELNIENIE MENU*/
  112. menu.setLayout(new GridLayout(5,2));
  113. menu.add(help);
  114. menu.add(blad);
  115. menu.add(prev);
  116. menu.add(next);
  117. menu.add(czarny);
  118. menu.add(bialy);
  119. menu.add(koniec);
  120. menu.add(name);
  121. menu.add(load);
  122. menu.add(save);
  123.  
  124. prev.addActionListener(new COFNIJ());
  125. next.addActionListener(new NASTEPNY());
  126. save.addActionListener(new ZAPISZ());
  127. load.addActionListener(new WCZYTAJ());
  128. help.addActionListener(new POMOC());
  129. czarny.addActionListener(new WCISKc());
  130. bialy.addActionListener(new WCISKb());
  131. koniec.addActionListener(new KONIEC());
  132.  
  133. setDefaultCloseOperation(EXIT_ON_CLOSE);
  134. }
  135. public class WCISKb implements ActionListener
  136.  
  137. {
  138. public void actionPerformed(ActionEvent e)
  139. {
  140. if(wciskk==0){
  141. wciskk++;
  142. }
  143. else if (wciskk!=0) {
  144. wciskk=1;
  145. blad.setText("Kolor przycisku zostal zrestartowany!");
  146. }
  147. }
  148. }
  149.  
  150. public class WCISKc implements ActionListener
  151.  
  152. {
  153. public void actionPerformed(ActionEvent e)
  154. {
  155. if(wciskk==1){
  156. wciskk--;
  157. }
  158. else if (wciskk!=1) {
  159. wciskk=1;
  160. blad.setText("Kolor przycisku zostal zrestartowany!");
  161. }
  162.  
  163. }
  164. }
  165.  
  166.  
  167. public class ZAZNACZ implements ActionListener{
  168. int i,j;
  169. ZAZNACZ(int i, int j){this.i=i;this.j=j;}
  170. public void actionPerformed(ActionEvent e){
  171. if((tab[i][j]).getBackground()==Color.magenta && wciskk==0) {
  172. if(((tab[i-1][j-1]).getBackground()==Color.black && (tab[i-1][j]).getBackground()==Color.black && (tab[i][j-1]).getBackground()==Color.black)||((tab[i-1][j]).getBackground()==Color.black && (tab[i-1][j+1]).getBackground()==Color.black && (tab[i][j+1]).getBackground()==Color.black)||((tab[i][j+1]).getBackground()==Color.black && (tab[i+1][j+1]).getBackground()==Color.black && (tab[i+1][j]).getBackground()==Color.black)||((tab[i+1][j]).getBackground()==Color.black && (tab[i+1][j-1]).getBackground()==Color.black && (tab[i][j-1]).getBackground()==Color.black)) {
  173. blad.setText("BLAD! NIEDOZWOLONY RUCH!");
  174. }
  175. else{
  176. (tab[i][j]).setBackground(Color.black);
  177. finish.dodajRuch(i,j,"black");
  178. }
  179. }
  180. else if ((tab[i][j]).getBackground()==Color.magenta && wciskk==1) {
  181. if(((tab[i-1][j-1]).getBackground()==Color.white && (tab[i-1][j]).getBackground()==Color.white && (tab[i][j-1]).getBackground()==Color.white)||((tab[i-1][j]).getBackground()==Color.white && (tab[i-1][j+1]).getBackground()==Color.white && (tab[i][j+1]).getBackground()==Color.white)||((tab[i][j+1]).getBackground()==Color.white && (tab[i+1][j+1]).getBackground()==Color.white && (tab[i+1][j]).getBackground()==Color.white)||((tab[i+1][j]).getBackground()==Color.white && (tab[i+1][j-1]).getBackground()==Color.white && (tab[i][j-1]).getBackground()==Color.white)) {
  182. blad.setText("BLAD! NIEDOZWOLONY RUCH!");
  183. }
  184. else{
  185. (tab[i][j]).setBackground(Color.white);
  186. finish.dodajRuch(i,j,"white");
  187. }
  188. }
  189. else{
  190. blad.setText("BLAD! NIEDOZWOLONY RUCH!");
  191. }
  192. }
  193. }
  194.  
  195. public class POMOC implements ActionListener{
  196. public void actionPerformed(ActionEvent e){
  197. tekst.setText("OTHELLO 1.02 by Michal Gorski nr indeksu 224689"+"\n"+"Witaj w grze OTHELLO! Zasady gry polegaja na tym, aby uzupelnic cala plansze"+"\n"+" czarnymi i bialymi kolorami tak, aby nie tworzyc tego samego koloru w postaci 2x2,"+"\n"+" pamietajac przy tym by wszystkie te same kolory byly ze soba polaczone."+"\n"+"Kilka uwag:"+"\n"+"1.Poczatkowo zaznaczony kolor to zawsze bialy."+"\n"+"2.Aby zapisac gre nalezy wpisac nazwe zapisu do pustego pola i nacisnac zapisz."+"\n"+"3.Wczytywanie dziala analogicznie do zapisywania"+"\n"+"Powodzenia i udanej zabawy! =)");
  198. }
  199. }
  200.  
  201. /*ZAPIS*/
  202. public class ZAPISZ implements ActionListener{
  203. public void actionPerformed(ActionEvent e){
  204. String nazwa = name.getText();
  205. File zapis = new File(nazwa+".ser");
  206. String warn;
  207. try {
  208. ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\Users\\DajMiNazwe\\Desktop\\Java\\Projekt\\"+nazwa+".ser"));
  209. out.writeObject(finish);
  210. out.close();
  211. blad.setText("Udalo sie zapisac stan GRY!");
  212. } catch (IOException e1) {
  213. blad.setText("Blad zapisu do pliku!!");
  214. }
  215. }
  216. }//ZAPISZ
  217.  
  218. public class COFNIJ implements ActionListener{
  219. public void actionPerformed(ActionEvent e){
  220. /*Jesli biezacy indeks 'ruchu' to poczatek listy ruchow to...*/
  221.  
  222. if(finish.biezacyIndeks==0){
  223. /*blokuj przycisk prev*/
  224. prev.setEnabled(false);
  225. /*odblokuj przycisk next*/
  226. next.setEnabled(true);
  227. /*powiadom gracza o osiagnieciu limitu posuniec do tylu*/
  228. blad.setText("Wykonano maksymalna liczbe posuniec do tylu!");
  229. }else{
  230. /*wyczysc pole tekstu*/
  231. blad.setText(null);
  232. /*odblokuj przycisk next*/
  233. next.setEnabled(true);
  234. /*pobierz dane o ostatnim ruchu*/
  235. RUCH cofany = finish.cofnijRuch();
  236. /*wyczysc przycisk (domyslnie z ikony)*/
  237. if((tab[cofany.x][cofany.y]).getBackground()!=Color.magenta){
  238. (tab[cofany.x][cofany.y]).setBackground(Color.magenta);
  239. (tab[cofany.x][cofany.y]).setEnabled(true);
  240. model.tab[cofany.x][cofany.y]=' ';
  241. }
  242.  
  243. /*przywroc kolor na czarny*/
  244.  
  245. }
  246. }
  247.  
  248.  
  249. }//COFNIJ
  250.  
  251.  
  252. /*NASTEPNY RUCH (przycisk DALEJ)*/
  253.  
  254.  
  255.  
  256. public class NASTEPNY implements ActionListener{
  257. public void actionPerformed(ActionEvent e){
  258.  
  259. if(finish.biezacyIndeks==finish.ruchy.size()){
  260. blad.setText("Wykonano maksymalna liczbe posuniec do przodu!");
  261. }else{
  262. blad.setText(null);
  263. prev.setEnabled(true);
  264. RUCH nastepny = finish.nastepnyRuch();
  265. if((nastepny.kolor).equals("white")){
  266. (tab[nastepny.x][nastepny.y]).setBackground(Color.white);
  267. }else{
  268. (tab[nastepny.x][nastepny.y]).setBackground(Color.black);
  269.  
  270. }
  271. }
  272.  
  273. }
  274. }//NASTEPNY
  275.  
  276. public class KONIEC implements ActionListener{
  277. int i=1,j=1;
  278. public void actionPerformed(ActionEvent e) {
  279. while(tab[i][j].getBackground()!=Color.magenta) {
  280. if(tab[i][j].getBackground()==Color.white && (tab[i-1][j].getBackground()==Color.white || tab[i][j+1].getBackground()==Color.white || tab[i+1][j].getBackground()==Color.white || tab[i][j-1].getBackground()==Color.white)) {
  281. blad.setText("OK!");
  282. i++;
  283. j++;
  284. }
  285. else if(tab[i][j].getBackground()==Color.black && (tab[i-1][j].getBackground()==Color.black || tab[i][j+1].getBackground()==Color.black || tab[i+1][j].getBackground()==Color.black || tab[i][j-1].getBackground()==Color.black)) {
  286. i++;
  287. j++;
  288. }
  289. else
  290. blad.setText("TO NIE KONIEC GRY!");
  291. break;
  292. }
  293. }
  294. }//KONIEC
  295.  
  296.  
  297.  
  298.  
  299. /*KLASA OPISUJACA WCZYTYWANIE STANU GRY*/
  300.  
  301. public class WCZYTAJ implements ActionListener{
  302. public void actionPerformed(ActionEvent e){
  303.  
  304. String plik = name.getText();
  305. finish = finish.wczytajRuchy(plik);
  306.  
  307. for(int i=0;i<finish.ruchy.size();i++){
  308. RUCH bierzacy = finish.ruchy.get(i);
  309. }
  310.  
  311.  
  312. for(int i=0;i<finish.ruchy.size();i++){
  313.  
  314. RUCH bierzacy = finish.ruchy.get(i);
  315.  
  316. if((tab[bierzacy.x][bierzacy.y]).getBackground()==Color.black){
  317. // blad.setText("Wykonano maksymalna liczbe posuniec do przodu!");
  318. (tab[bierzacy.x][bierzacy.y]).setBackground(Color.black);
  319.  
  320.  
  321.  
  322. }
  323.  
  324. if((tab[bierzacy.x][bierzacy.y]).getBackground()==Color.white){
  325. (tab[bierzacy.x][bierzacy.y]).setBackground(Color.white);
  326. blad.setText("Wykonano maksymalna liczbe posuniec do przodu!");
  327.  
  328. }
  329. }
  330. }
  331. }//WCZYTAJ
  332.  
  333. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement