Frumkin

Untitled

Sep 9th, 2023
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 23.09 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace ttfegame
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         int[] Value = new int[16];
  16.         Image[] Block = new Image[16];
  17.  
  18.         int blockTag = 0;
  19.         int block = 0;
  20.         bool tileMoved_or_Merged = false;
  21.         int[] tileAvailability = new int[16];
  22.         int emptyTiles = 0;
  23.         int tileTag = 0;
  24.         int randomIndex = 0;
  25.  
  26.         Random random = new Random();
  27.  
  28.         string backImage = @"C:\Users\Raz\Documents\2048 Game\Background.png";
  29.  
  30.  
  31.  
  32.  
  33.         public Form1()
  34.         {
  35.             InitializeComponent();
  36.             this.BackgroundImage = new Bitmap(backImage);
  37.  
  38.             addNewTile();
  39.         }
  40.         private void changeAllBackColors()
  41.         {
  42.             for (int Tag = 0; Tag < 16; Tag += 1)
  43.             {
  44.                 switch (Value[Tag])
  45.                 {
  46.                     case 0:
  47.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile0.png");
  48.                         break;
  49.                     case 2:
  50.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile2.png");
  51.                         break;
  52.                     case 4:
  53.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile4.png");
  54.                         break;
  55.                     case 8:
  56.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile8.png");
  57.                         break;
  58.                     case 16:
  59.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile16.png");
  60.                         break;
  61.                     case 32:
  62.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile32.png");
  63.                         break;
  64.                     case 64:
  65.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile64.png");
  66.                         break;
  67.                     case 128:
  68.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile128.png");
  69.                         break;
  70.                     case 256:
  71.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile256.png");
  72.                         break;
  73.                     case 512:
  74.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile512.png");
  75.                         break;
  76.                     case 1024:
  77.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile1024.png");
  78.                         break;
  79.                     case 2048:
  80.                         Block[Tag] = new Bitmap(@"C:\Users\Raz\Documents\2048 Game\tile2048.png");
  81.                         break;
  82.                 }
  83.             }
  84.         }
  85.  
  86.         private void timer1_Tick(object sender, EventArgs e)
  87.         {
  88.             Invalidate();
  89.             changeControlsInformations();
  90.             changeAllBackColors();
  91.         }
  92.  
  93.         private void addNewTile()
  94.         {
  95.             tileTag = 0;
  96.             emptyTiles = 0;
  97.             System.Array.Resize(ref tileAvailability, 16);
  98.             for (int time = 0; time < 16; time += 1)
  99.             {
  100.                 tileAvailability[time] = 0;
  101.             }
  102.             for (int loop = 0; loop < 16; loop += 1)
  103.             {
  104.                 if (Value[loop] == 0)
  105.                 {
  106.                     tileAvailability[tileTag] = loop;
  107.                     tileTag += 1;
  108.                     emptyTiles += 1;
  109.                 }
  110.             }
  111.             if (emptyTiles > 0)
  112.             {
  113.                 System.Array.Resize(ref tileAvailability, emptyTiles);
  114.                 randomIndex = random.Next(0, emptyTiles - 1);
  115.                 Value[tileAvailability[randomIndex]] = 2;
  116.             }
  117.         }
  118.  
  119.         private void changeControlsInformations()
  120.         {
  121.             block0.Image = Block[0];
  122.             block1.Image = Block[1];
  123.             block2.Image = Block[2];
  124.             block3.Image = Block[3];
  125.             block4.Image = Block[4];
  126.             block5.Image = Block[5];
  127.             block6.Image = Block[6];
  128.             block7.Image = Block[7];
  129.             block8.Image = Block[8];
  130.             block9.Image = Block[9];
  131.             block10.Image = Block[10];
  132.             block11.Image = Block[11];
  133.             block12.Image = Block[12];
  134.             block13.Image = Block[13];
  135.             block14.Image = Block[14];
  136.             block15.Image = Block[15];
  137.         }
  138.         private void Form1_KeyDown(object sender, KeyEventArgs e)
  139.         {
  140.             if (e.KeyData == Keys.Up)
  141.             {
  142.                 moveUp();
  143.             }
  144.  
  145.             if (e.KeyData == Keys.Down)
  146.             {
  147.                 moveDown();
  148.             }
  149.  
  150.             if (e.KeyData == Keys.Left)
  151.             {
  152.                 moveLeft();
  153.             }
  154.  
  155.             if (e.KeyData == Keys.Right)
  156.             {
  157.                 moveRight();
  158.             }
  159.            
  160.             if (e.KeyData == Keys.R)
  161.             {
  162.                 for (int t = 0; t < 16; t += 1)
  163.                 {
  164.                     Value[t] = 0;
  165.                 }
  166.                 addNewTile();
  167.             }
  168.             if (e.KeyData == Keys.Space)
  169.             {
  170.                 for (int t = 0; t < 16; t += 1)
  171.                 {
  172.                     Value[t] = 32;
  173.                 }
  174.             }
  175.         }
  176.  
  177.         private void moveUp()
  178.         {
  179.             for (int loop1 = 0; loop1 < 4; loop1 += 1)
  180.             {
  181.                 block = blockTag;
  182.                 if (Value[block] == Value[block + 4])
  183.                 {
  184.                     Value[block] = Value[block] * 2;
  185.                     tileMoved_or_Merged = true;
  186.                     Value[block + 4] = 0;
  187.                 }
  188.  
  189.                 if (Value[block + 4] == Value[block + 8] && Value[block] != Value[block + 4])
  190.                 {
  191.                     Value[block + 4] = Value[block + 4] * 2;
  192.                     tileMoved_or_Merged = true;
  193.                     Value[block + 8] = 0;
  194.                 }
  195.  
  196.                 if (Value[block + 8] == Value[block + 12] && Value[block + 4] != Value[block + 8])
  197.                 {
  198.                     Value[block + 8] = Value[block + 8] * 2;
  199.                     tileMoved_or_Merged = true;
  200.                     Value[block + 12] = 0;
  201.                 }
  202.  
  203.                 for (int loop2 = 0; loop2 < 3; loop2 += 1)
  204.                 {
  205.                     if (block == 0 || block == 1 || block == 2 || block == 3)
  206.                     {
  207.                         if (Value[block] == 0)
  208.                         {
  209.                             Value[block] = Value[block + 4];
  210.                             Value[block + 4] = 0;
  211.                             tileMoved_or_Merged = true;
  212.                         }
  213.                     }
  214.                     if (block == 4 || block == 5 || block == 6 || block == 7)
  215.                     {
  216.                         if (Value[block] == 0 && Value[block - 4] == 0)
  217.                         {
  218.                             Value[block - 4] = Value[block + 4];
  219.                             Value[block + 4] = 0;
  220.                             tileMoved_or_Merged = true;
  221.                         }
  222.                         else if (Value[block] == 0)
  223.                         {
  224.                             Value[block] = Value[block + 4];
  225.                             Value[block + 4] = 0;
  226.                             tileMoved_or_Merged = true;
  227.  
  228.                             if (Value[block] == Value[block - 4])
  229.                             {
  230.                                 Value[block - 4] = Value[block] * 2;
  231.                                 Value[block] = 0;
  232.                                 tileMoved_or_Merged = true;
  233.                             }
  234.                         }
  235.                     }
  236.                     if (block == 8 || block == 9 || block == 10 || block == 11)
  237.                     {
  238.                         if (Value[block] == 0 && Value[block - 4] == 0 && Value[block - 8] == 0)
  239.                         {
  240.                             Value[block - 8] = Value[block + 4];
  241.                             Value[block + 4] = 0;
  242.                             tileMoved_or_Merged = true;
  243.                         }
  244.                         else if (Value[block] == 0 && Value[block - 4] == 0)
  245.                         {
  246.                             Value[block - 4] = Value[block + 4];
  247.                             Value[block + 4] = 0;
  248.                             tileMoved_or_Merged = true;
  249.  
  250.                             if (Value[block - 4] == Value[block - 8])
  251.                             {
  252.                                 Value[block - 8] = Value[block - 4] * 2;
  253.                                 Value[block - 4] = 0;
  254.                                 tileMoved_or_Merged = true;
  255.                             }
  256.                         }
  257.                         else if (Value[block] == 0)
  258.                         {
  259.                             Value[block] = Value[block + 4];
  260.                             Value[block + 4] = 0;
  261.                             tileMoved_or_Merged = true;
  262.  
  263.                             if (Value[block] == Value[block - 4])
  264.                             {
  265.                                 Value[block - 4] = Value[block] * 2;
  266.                                 Value[block] = 0;
  267.                                 tileMoved_or_Merged = true;
  268.                             }
  269.                         }
  270.                     }
  271.  
  272.                     block += 4;
  273.                 }
  274.                 blockTag += 1;
  275.             }
  276.             blockTag = 0;
  277.             block = 0;
  278.             if (tileMoved_or_Merged == true)
  279.             {
  280.                 addNewTile();
  281.                 tileMoved_or_Merged = false;
  282.             }
  283.         }
  284.  
  285.         private void moveDown()
  286.         {
  287.             blockTag = 12;
  288.             for (int loop1 = 0; loop1 < 4; loop1 += 1)
  289.             {
  290.                 block = blockTag;
  291.                 if (Value[block] == Value[block - 4])
  292.                 {
  293.                     Value[block] = Value[block] * 2;
  294.                     tileMoved_or_Merged = true;
  295.                     Value[block - 4] = 0;
  296.                 }
  297.  
  298.                 if (Value[block - 4] == Value[block - 8] && Value[block] != Value[block - 4])
  299.                 {
  300.                     Value[block - 4] = Value[block - 4] * 2;
  301.                     tileMoved_or_Merged = true;
  302.                     Value[block - 8] = 0;
  303.                 }
  304.  
  305.                 if (Value[block - 8] == Value[block - 12] && Value[block - 4] != Value[block - 8])
  306.                 {
  307.                     Value[block - 8] = Value[block - 8] * 2;
  308.                     tileMoved_or_Merged = true;
  309.                     Value[block - 12] = 0;
  310.                 }
  311.  
  312.                 for (int loop2 = 0; loop2 < 3; loop2 += 1)
  313.                 {
  314.                     if (block == 12 || block == 13 || block == 14 || block == 15)
  315.                     {
  316.                         if (Value[block] == 0)
  317.                         {
  318.                             Value[block] = Value[block - 4];
  319.                             Value[block - 4] = 0;
  320.                             tileMoved_or_Merged = true;
  321.                         }
  322.                     }
  323.                     if (block == 8 || block == 9 || block == 10 || block == 11)
  324.                     {
  325.                         if (Value[block] == 0 && Value[block + 4] == 0)
  326.                         {
  327.                             Value[block + 4] = Value[block - 4];
  328.                             Value[block - 4] = 0;
  329.                             tileMoved_or_Merged = true;
  330.                         }
  331.                         else if (Value[block] == 0)
  332.                         {
  333.                             Value[block] = Value[block - 4];
  334.                             Value[block - 4] = 0;
  335.                             tileMoved_or_Merged = true;
  336.  
  337.                             if (Value[block] == Value[block + 4])
  338.                             {
  339.                                 Value[block + 4] = Value[block] * 2;
  340.                                 Value[block] = 0;
  341.                                 tileMoved_or_Merged = true;
  342.                             }
  343.                         }
  344.                     }
  345.                     if (block == 4 || block == 5 || block == 6 || block == 7)
  346.                     {
  347.                         if (Value[block] == 0 && Value[block + 4] == 0 && Value[block + 8] == 0)
  348.                         {
  349.                             Value[block + 8] = Value[block - 4];
  350.                             Value[block - 4] = 0;
  351.                             tileMoved_or_Merged = true;
  352.                         }
  353.                         else if (Value[block] == 0 && Value[block + 4] == 0)
  354.                         {
  355.                             Value[block + 4] = Value[block - 4];
  356.                             Value[block - 4] = 0;
  357.                             tileMoved_or_Merged = true;
  358.  
  359.                             if (Value[block + 4] == Value[block + 8])
  360.                             {
  361.                                 Value[block + 8] = Value[block + 4] * 2;
  362.                                 Value[block + 4] = 0;
  363.                                 tileMoved_or_Merged = true;
  364.                             }
  365.                         }
  366.                         else if (Value[block] == 0)
  367.                         {
  368.                             Value[block] = Value[block - 4];
  369.                             Value[block - 4] = 0;
  370.                             tileMoved_or_Merged = true;
  371.  
  372.                             if (Value[block] == Value[block + 4])
  373.                             {
  374.                                 Value[block + 4] = Value[block] * 2;
  375.                                 Value[block] = 0;
  376.                                 tileMoved_or_Merged = true;
  377.                             }
  378.                         }
  379.                     }
  380.  
  381.                     block -= 4;
  382.                 }
  383.                 blockTag += 1;
  384.             }
  385.             blockTag = 0;
  386.             block = 0;
  387.             if (tileMoved_or_Merged == true)
  388.             {
  389.                 addNewTile();
  390.                 tileMoved_or_Merged = false;
  391.             }
  392.         }
  393.  
  394.         private void moveLeft()
  395.         {
  396.             blockTag = 12;
  397.             for (int loop1 = 0; loop1 < 4; loop1 += 1)
  398.             {
  399.                 block = blockTag;
  400.                 if (Value[block] == Value[block + 1])
  401.                 {
  402.                     Value[block] = Value[block] * 2;
  403.                     tileMoved_or_Merged = true;
  404.                     Value[block + 1] = 0;
  405.                 }
  406.  
  407.                 if (Value[block + 1] == Value[block + 2] && Value[block] != Value[block + 1])
  408.                 {
  409.                     Value[block + 1] = Value[block + 1] * 2;
  410.                     tileMoved_or_Merged = true;
  411.                     Value[block + 2] = 0;
  412.                 }
  413.  
  414.                 if (Value[block + 2] == Value[block + 3] && Value[block + 1] != Value[block + 2])
  415.                 {
  416.                     Value[block + 2] = Value[block + 2] * 2;
  417.                     tileMoved_or_Merged = true;
  418.                     Value[block + 3] = 0;
  419.                 }
  420.  
  421.                 for (int loop2 = 0; loop2 < 3; loop2 += 1)
  422.                 {
  423.                     if (block == 0 || block == 4 || block == 8 || block == 12)
  424.                     {
  425.                         if (Value[block] == 0)
  426.                         {
  427.                             Value[block] = Value[block + 1];
  428.                             Value[block + 1] = 0;
  429.                             tileMoved_or_Merged = true;
  430.                         }
  431.                     }
  432.                     if (block == 1 || block == 5 || block == 9 || block == 13)
  433.                     {
  434.                         if (Value[block] == 0 && Value[block - 1] == 0)
  435.                         {
  436.                             Value[block - 1] = Value[block + 1];
  437.                             Value[block + 1] = 0;
  438.                             tileMoved_or_Merged = true;
  439.                         }
  440.                         else if (Value[block] == 0)
  441.                         {
  442.                             Value[block] = Value[block + 1];
  443.                             Value[block + 1] = 0;
  444.                             tileMoved_or_Merged = true;
  445.  
  446.                             if (Value[block] == Value[block - 1])
  447.                             {
  448.                                 Value[block - 1] = Value[block] * 2;
  449.                                 Value[block] = 0;
  450.                                 tileMoved_or_Merged = true;
  451.                             }
  452.                         }
  453.                     }
  454.                     if (block == 2 || block == 6 || block == 10 || block == 14)
  455.                     {
  456.                         if (Value[block] == 0 && Value[block - 1] == 0 && Value[block - 2] == 0)
  457.                         {
  458.                             Value[block - 2] = Value[block + 1];
  459.                             Value[block + 1] = 0;
  460.                             tileMoved_or_Merged = true;
  461.                         }
  462.                         else if (Value[block] == 0 && Value[block - 1] == 0)
  463.                         {
  464.                             Value[block - 1] = Value[block + 1];
  465.                             Value[block + 1] = 0;
  466.                             tileMoved_or_Merged = true;
  467.  
  468.                             if (Value[block - 1] == Value[block - 2])
  469.                             {
  470.                                 Value[block - 2] = Value[block - 1] * 2;
  471.                                 Value[block - 1] = 0;
  472.                                 tileMoved_or_Merged = true;
  473.                             }
  474.                         }
  475.                         else if (Value[block] == 0)
  476.                         {
  477.                             Value[block] = Value[block + 1];
  478.                             Value[block + 1] = 0;
  479.                             tileMoved_or_Merged = true;
  480.  
  481.                             if (Value[block] == Value[block - 1])
  482.                             {
  483.                                 Value[block - 1] = Value[block] * 2;
  484.                                 Value[block] = 0;
  485.                                 tileMoved_or_Merged = true;
  486.                             }
  487.                         }
  488.                     }
  489.  
  490.                     block += 1;
  491.                 }
  492.                 blockTag -= 4;
  493.             }
  494.             blockTag = 0;
  495.             block = 0;
  496.             if (tileMoved_or_Merged == true)
  497.             {
  498.                 addNewTile();
  499.                 tileMoved_or_Merged = false;
  500.             }
  501.         }
  502.  
  503.         private void moveRight()
  504.         {
  505.             blockTag = 15;
  506.             for (int loop1 = 0; loop1 < 4; loop1 += 1)
  507.             {
  508.                 block = blockTag;
  509.                 if (Value[block] == Value[block - 1])
  510.                 {
  511.                     Value[block] = Value[block] * 2;
  512.                     tileMoved_or_Merged = true;
  513.                     Value[block - 1] = 0;
  514.                 }
  515.  
  516.                 if (Value[block - 1] == Value[block - 2] && Value[block] != Value[block - 1])
  517.                 {
  518.                     Value[block - 1] = Value[block - 1] * 2;
  519.                     tileMoved_or_Merged = true;
  520.                     Value[block - 2] = 0;
  521.                 }
  522.  
  523.                 if (Value[block - 2] == Value[block - 3] && Value[block - 1] != Value[block - 2])
  524.                 {
  525.                     Value[block - 2] = Value[block - 2] * 2;
  526.                     tileMoved_or_Merged = true;
  527.                     Value[block - 3] = 0;
  528.                 }
  529.  
  530.                 for (int loop2 = 0; loop2 < 3; loop2 += 1)
  531.                 {
  532.                     if (block == 3 || block == 7 || block == 11 || block == 15)
  533.                     {
  534.                         if (Value[block] == 0)
  535.                         {
  536.                             Value[block] = Value[block - 1];
  537.                             Value[block - 1] = 0;
  538.                             tileMoved_or_Merged = true;
  539.                         }
  540.                     }
  541.                     if (block == 2 || block == 6 || block == 10 || block == 14)
  542.                     {
  543.                         if (Value[block] == 0 && Value[block + 1] == 0)
  544.                         {
  545.                             Value[block + 1] = Value[block - 1];
  546.                             Value[block - 1] = 0;
  547.                             tileMoved_or_Merged = true;
  548.                         }
  549.                         else if (Value[block] == 0)
  550.                         {
  551.                             Value[block] = Value[block - 1];
  552.                             Value[block - 1] = 0;
  553.                             tileMoved_or_Merged = true;
  554.  
  555.                             if (Value[block] == Value[block + 1])
  556.                             {
  557.                                 Value[block + 1] = Value[block] * 2;
  558.                                 Value[block] = 0;
  559.                                 tileMoved_or_Merged = true;
  560.                             }
  561.                         }
  562.                     }
  563.                     if (block == 1 || block == 5 || block == 9 || block == 13)
  564.                     {
  565.                         if (Value[block] == 0 && Value[block + 1] == 0 && Value[block + 2] == 0)
  566.                         {
  567.                             Value[block + 2] = Value[block - 1];
  568.                             Value[block - 1] = 0;
  569.                             tileMoved_or_Merged = true;
  570.                         }
  571.                         else if (Value[block] == 0 && Value[block + 1] == 0)
  572.                         {
  573.                             Value[block + 1] = Value[block - 1];
  574.                             Value[block - 1] = 0;
  575.                             tileMoved_or_Merged = true;
  576.  
  577.                             if (Value[block + 1] == Value[block + 2])
  578.                             {
  579.                                 Value[block + 2] = Value[block + 1] * 2;
  580.                                 Value[block + 1] = 0;
  581.                                 tileMoved_or_Merged = true;
  582.                             }
  583.                         }
  584.                         else if (Value[block] == 0)
  585.                         {
  586.                             Value[block] = Value[block - 1];
  587.                             Value[block - 1] = 0;
  588.                             tileMoved_or_Merged = true;
  589.  
  590.                             if (Value[block] == Value[block + 1])
  591.                             {
  592.                                 Value[block + 1] = Value[block] * 2;
  593.                                 Value[block] = 0;
  594.                                 tileMoved_or_Merged = true;
  595.                             }
  596.                         }
  597.                     }
  598.  
  599.                     block -= 1;
  600.                 }
  601.                 blockTag -= 4;
  602.             }
  603.             blockTag = 0;
  604.             block = 0;
  605.             if (tileMoved_or_Merged == true)
  606.             {
  607.                 addNewTile();
  608.                 tileMoved_or_Merged = false;
  609.             }
  610.         }
  611.     }
  612. }
  613.  
Add Comment
Please, Sign In to add comment