Advertisement
Guest User

Untitled

a guest
Nov 16th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.78 KB | None | 0 0
  1. package cursach;
  2.  
  3. import java.awt.Point;
  4. import javax.swing.JOptionPane;
  5.  
  6. public class yoga extends javax.swing.JFrame {
  7. int xPred, yPred, x,y;
  8. private static char[][] field;
  9. public static void setFromStringlist(String[] fieldInit) {
  10. for (int row = 0; row < 7; ++row) {
  11. field[row] = fieldInit[row].toCharArray();
  12. }
  13. }
  14.  
  15. String textCell;
  16.  
  17. boolean f;
  18. public yoga() {
  19. initComponents();
  20. Table.setCellSelectionEnabled(true);
  21. Table.setShowGrid(true);
  22. Table.setRowHeight(60);
  23. field = new char[7][7];
  24. setFromStringlist(new String[] {
  25.  
  26. "xx xx", //
  27. "xx xx", //
  28. " ", //
  29. " # ", //
  30. " ", //
  31. "xx xx", //
  32. "xx xx" //
  33. });
  34. }
  35.  
  36. @SuppressWarnings("unchecked")
  37. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  38. private void initComponents() {
  39.  
  40. jTabbedPane1 = new javax.swing.JTabbedPane();
  41. jPanel1 = new javax.swing.JPanel();
  42. jScrollPane1 = new javax.swing.JScrollPane();
  43. Table = new javax.swing.JTable();
  44. jButton1 = new javax.swing.JButton();
  45. jPanel2 = new javax.swing.JPanel();
  46. jScrollPane2 = new javax.swing.JScrollPane();
  47. jTextArea1 = new javax.swing.JTextArea();
  48.  
  49. setResizable(false);
  50.  
  51. Table.setFont(new java.awt.Font("Dialog", 0, 36)); // NOI18N
  52. Table.setModel(new javax.swing.table.DefaultTableModel(
  53. new Object [][] {
  54. {null, null, null, null, null, null, null},
  55. {null, null, null, null, null, null, null},
  56. {null, null, null, null, null, null, null},
  57. {null, null, null, null, null, null, null},
  58. {null, null, null, null, null, null, null},
  59. {null, null, null, null, null, null, null},
  60. {null, null, null, null, null, null, null}
  61. },
  62. new String [] {
  63. "", "", "", "", "", "", ""
  64. }
  65. ) {
  66. boolean[] canEdit = new boolean [] {
  67. false, false, false, false, false, false, false
  68. };
  69.  
  70. public boolean isCellEditable(int rowIndex, int columnIndex) {
  71. return canEdit [columnIndex];
  72. }
  73. });
  74. Table.addMouseListener(new java.awt.event.MouseAdapter() {
  75. public void mouseClicked(java.awt.event.MouseEvent evt) {
  76. TableMouseClicked(evt);
  77. }
  78. });
  79. jScrollPane1.setViewportView(Table);
  80. if (Table.getColumnModel().getColumnCount() > 0) {
  81. Table.getColumnModel().getColumn(0).setResizable(false);
  82. Table.getColumnModel().getColumn(1).setResizable(false);
  83. Table.getColumnModel().getColumn(2).setResizable(false);
  84. Table.getColumnModel().getColumn(3).setResizable(false);
  85. Table.getColumnModel().getColumn(4).setResizable(false);
  86. Table.getColumnModel().getColumn(5).setResizable(false);
  87. Table.getColumnModel().getColumn(6).setResizable(false);
  88. }
  89.  
  90. jButton1.setText("Начать игру");
  91. jButton1.addActionListener(new java.awt.event.ActionListener() {
  92. public void actionPerformed(java.awt.event.ActionEvent evt) {
  93. jButton1ActionPerformed(evt);
  94. }
  95. });
  96.  
  97. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  98. jPanel1.setLayout(jPanel1Layout);
  99. jPanel1Layout.setHorizontalGroup(
  100. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  101. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 555, Short.MAX_VALUE)
  102. .addGroup(jPanel1Layout.createSequentialGroup()
  103. .addGap(209, 209, 209)
  104. .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE)
  105. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  106. );
  107. jPanel1Layout.setVerticalGroup(
  108. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  109. .addGroup(jPanel1Layout.createSequentialGroup()
  110. .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 435, javax.swing.GroupLayout.PREFERRED_SIZE)
  111. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  112. .addComponent(jButton1)
  113. .addGap(0, 0, Short.MAX_VALUE))
  114. );
  115.  
  116. jTabbedPane1.addTab("Йога", jPanel1);
  117.  
  118. jTextArea1.setColumns(20);
  119. jTextArea1.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
  120. jTextArea1.setRows(5);
  121. jTextArea1.setText("Правила игры:\n- Чтобы начать игру нажмите на кнопку \"Начать игру\"\n- Фишки перемещаются только по горизонтали и вертикали\n- Перемещение возможно только в случае поедания фишки\n- Чтобы съесть фишку надо её перешагнуть другой фишкой\n- Игра завершается, когда на поле остаётся только одна фишка");
  122. jScrollPane2.setViewportView(jTextArea1);
  123.  
  124. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
  125. jPanel2.setLayout(jPanel2Layout);
  126. jPanel2Layout.setHorizontalGroup(
  127. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  128. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
  129. .addContainerGap()
  130. .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 531, Short.MAX_VALUE)
  131. .addContainerGap())
  132. );
  133. jPanel2Layout.setVerticalGroup(
  134. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  135. .addGroup(jPanel2Layout.createSequentialGroup()
  136. .addGap(125, 125, 125)
  137. .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 229, javax.swing.GroupLayout.PREFERRED_SIZE)
  138. .addContainerGap(112, Short.MAX_VALUE))
  139. );
  140.  
  141. jTabbedPane1.addTab("Помощь", jPanel2);
  142.  
  143. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  144. getContentPane().setLayout(layout);
  145. layout.setHorizontalGroup(
  146. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  147. .addComponent(jTabbedPane1)
  148. );
  149. layout.setVerticalGroup(
  150. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  151. .addComponent(jTabbedPane1)
  152. );
  153.  
  154. pack();
  155. setLocationRelativeTo(null);
  156. }// </editor-fold>
  157.  
  158. boolean check_end(){
  159. int fieldSize = 7;
  160. char emptyChar = ' ';
  161. char noFieldChar = ' ';
  162. char occupiedChar = '#';
  163. int directions[][] = new int[][] {
  164.  
  165. // row-col pairs
  166. {1, 0},
  167. {-1, 0},
  168. {0, 1},
  169. {0, -1}
  170. // —
  171. };
  172.  
  173. for (int row = 0; row < fieldSize; ++row) {
  174. for (int col = 0; col < fieldSize; ++col) {
  175. for (int dir = 0; dir < directions.length; ++dir) {
  176. char onCell = field[row][col];
  177. if (onCell == occupiedChar) {
  178. int targetRow = 2 * directions[dir][0] + row;
  179. int targetCol = 2 * directions[dir][1] + col;
  180.  
  181. if ((targetCol < 0 || targetCol >= fieldSize) ||
  182. (targetRow < 0 || targetRow >= fieldSize)) {
  183. continue;
  184. } else {
  185. char targetChar = field[row][col];
  186. if (targetChar == emptyChar || targetChar == noFieldChar) {
  187. continue;
  188. } else {
  189. int middleRow = directions[dir][0] + row;
  190. int middleCol = directions[dir][1] + col;
  191. char middleChar = field[middleRow][middleCol];
  192. if (middleChar == occupiedChar) {
  193. return true;
  194. } else {
  195. continue;
  196. }
  197. }
  198. }
  199. }
  200. }
  201. }
  202. }
  203.  
  204. return false;
  205. }
  206.  
  207. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  208. for(int s=0;s<2;s++){
  209. for(int r=0;r<2;r++){
  210. Table.setValueAt((char)8855,s,r);
  211. }
  212. for(int r=2;r<5;r++){
  213. Table.setValueAt((char)9679,s,r);
  214. }
  215. for(int r=5;r<7;r++){
  216. Table.setValueAt((char)8855,s,r);
  217. }
  218. }
  219. for(int s=2;s<5;s++){
  220. for(int r=0;r<7;r++){
  221. Table.setValueAt((char)9679,s,r);
  222. }
  223. }
  224. for(int s=5;s<7;s++){
  225. for(int r=0;r<2;r++){
  226. Table.setValueAt((char)8855,s,r);
  227. }
  228. for(int r=2;r<5;r++){
  229. Table.setValueAt((char)9679,s,r);
  230. }
  231. for(int r=5;r<7;r++){
  232. Table.setValueAt((char)8855,s,r);
  233. }
  234. }
  235. Table.setValueAt(null,3,3);
  236. //f=true;
  237. }
  238.  
  239. private void TableMouseClicked(java.awt.event.MouseEvent evt) {
  240.  
  241. x = Table.rowAtPoint(evt.getPoint());
  242. y = Table.columnAtPoint(evt.getPoint());
  243. if(Table.getValueAt(x,y)==null&&textCell.equals((char)9679+"")){
  244. if(x-xPred==2 && y-yPred==0 && Table.getValueAt(x-1,y)!=null){
  245. Table.setValueAt(null,x-1,y);
  246. Table.setValueAt(null,xPred,yPred);
  247. Table.setValueAt((char)9679,x,y);
  248. }
  249. if(xPred-x==2 && y-yPred==0 && Table.getValueAt(x+1,y)!=null){
  250. Table.setValueAt(null,x+1,y);
  251. Table.setValueAt(null,xPred,yPred);
  252. Table.setValueAt((char)9679,x,y);
  253. }
  254. if(x-xPred==0 && y-yPred==2 && Table.getValueAt(x,y-1)!=null){
  255. Table.setValueAt(null,x,y-1);
  256. Table.setValueAt(null,xPred,yPred);
  257. Table.setValueAt((char)9679,x,y);
  258. }
  259. if(x-xPred==0 && yPred-y==2 && Table.getValueAt(x,y+1)!=null){
  260. Table.setValueAt(null,x,y+1);
  261. Table.setValueAt(null,xPred,yPred);
  262. Table.setValueAt((char)9679,x,y);
  263. }
  264. if(!check_end())
  265. JOptionPane.showMessageDialog(rootPane, "Ходов больше нет!!!", "Молодец", 1);
  266. return;
  267. }
  268. xPred = x;
  269. yPred = y;
  270. textCell=Table.getValueAt(x,y)+"";
  271. x=0;
  272. for(int i=0;i<7;i++){
  273. for(int j=0;j<7;j++)
  274. if(Table.getValueAt(i,j)==null) {
  275. x++;
  276. }
  277. }
  278. if(x==32){
  279. JOptionPane.showMessageDialog(rootPane, "Конец игры!!!", "Молодец", 1);
  280. f=false;
  281. }
  282.  
  283. }
  284.  
  285. public static void main(String args[]) {
  286. /* Set the Nimbus look and feel */
  287. //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
  288. /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
  289. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
  290. */
  291. try {
  292. for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
  293. if ("Nimbus".equals(info.getName())) {
  294. javax.swing.UIManager.setLookAndFeel(info.getClassName());
  295. break;
  296. }
  297. }
  298. } catch (ClassNotFoundException ex) {
  299. java.util.logging.Logger.getLogger(yoga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  300. } catch (InstantiationException ex) {
  301. java.util.logging.Logger.getLogger(yoga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  302. } catch (IllegalAccessException ex) {
  303. java.util.logging.Logger.getLogger(yoga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  304. } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  305. java.util.logging.Logger.getLogger(yoga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  306. }
  307. //</editor-fold>
  308.  
  309. /* Create and display the form */
  310. java.awt.EventQueue.invokeLater(new Runnable() {
  311. public void run() {
  312. new yoga().setVisible(true);
  313. }
  314. });
  315. }
  316.  
  317. // Variables declaration - do not modify
  318. private javax.swing.JTable Table;
  319. private javax.swing.JButton jButton1;
  320. private javax.swing.JPanel jPanel1;
  321. private javax.swing.JPanel jPanel2;
  322. private javax.swing.JScrollPane jScrollPane1;
  323. private javax.swing.JScrollPane jScrollPane2;
  324. private javax.swing.JTabbedPane jTabbedPane1;
  325. private javax.swing.JTextArea jTextArea1;
  326. // End of variables declaration
  327.  
  328. private int rowAtPoint(Point point) {
  329. return point.x;
  330. }
  331.  
  332. private int columnAtPoint(Point point) {
  333. return point.y;
  334. }
  335.  
  336. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement