Compare commits

..

No commits in common. "643ad9d28ef81afe76ca7b8a77c9225973f1f4b9" and "651feb9ee017cb1094abb341e1e84503ed1837b8" have entirely different histories.

90 changed files with 68 additions and 592 deletions

Binary file not shown.

Binary file not shown.

View file

@ -14,9 +14,9 @@ namespace Bowling.Classes
public string Name { get; set; }
[JsonProperty("score")]
public List<int> Score { get; set; } = new List<int>();
public List<int> Score { get; set; }
public string Serialize()
{
return JsonConvert.SerializeObject(this);

View file

@ -44,7 +44,6 @@
this.NameTB.Name = "NameTB";
this.NameTB.Size = new System.Drawing.Size(224, 27);
this.NameTB.TabIndex = 0;
this.NameTB.Text = "test";
//
// IPTB
//
@ -52,7 +51,6 @@
this.IPTB.Name = "IPTB";
this.IPTB.Size = new System.Drawing.Size(224, 27);
this.IPTB.TabIndex = 1;
this.IPTB.Text = "127.0.0.1";
//
// PortTB
//
@ -60,7 +58,6 @@
this.PortTB.Name = "PortTB";
this.PortTB.Size = new System.Drawing.Size(224, 27);
this.PortTB.TabIndex = 2;
this.PortTB.Text = "7632";
//
// label1
//
@ -124,7 +121,6 @@
this.Controls.Add(this.NameTB);
this.Name = "Connect";
this.Text = "Launcher";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Connect_FormClosing);
this.ResumeLayout(false);
this.PerformLayout();

View file

@ -39,9 +39,5 @@ namespace Bowling
private void ExitBtn_Click(object sender, EventArgs e)
{
}
private void Connect_FormClosing(object sender, FormClosingEventArgs e)
{
}
}
}

View file

@ -63,18 +63,6 @@
/processorParam:TextureFormat=Color
/build:keggle.png
#begin line.png
/importer:TextureImporter
/processor:TextureProcessor
/processorParam:ColorKeyColor=255,0,255,255
/processorParam:ColorKeyEnabled=True
/processorParam:GenerateMipmaps=False
/processorParam:PremultiplyAlpha=True
/processorParam:ResizeToPowerOfTwo=False
/processorParam:MakeSquare=False
/processorParam:TextureFormat=Color
/build:line.png
#begin logo.png
/importer:TextureImporter
/processor:TextureProcessor

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 B

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View file

@ -9,7 +9,6 @@
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont2.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/keggle.png</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/line.png</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/logo.png</File>
</SourceFiles>
<DestFiles>
@ -19,6 +18,5 @@
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
</DestFiles>
</SourceFileCollection>

View file

@ -1,2 +1,7 @@
Source File,Dest File,Processor Type,Content Type,Source File Size,Dest File Size,Build Seconds
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/keggle.png","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/keggle.xnb","TextureProcessor","Texture2DContent",980,6485,0,2016653
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/arrow.png","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/arrow.xnb","TextureProcessor","Texture2DContent",365,2725,0,1815462
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/ball.png","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/ball.xnb","TextureProcessor","Texture2DContent",652,10085,0,0060204
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont.spritefont","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/gameFont.xnb","FontDescriptionProcessor","SpriteFontContent",2069,70690,0,1249094
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont2.spritefont","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/gameFont2.xnb","FontDescriptionProcessor","SpriteFontContent",2069,136226,0,0442164
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/keggle.png","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/keggle.xnb","TextureProcessor","Texture2DContent",276,4181,0,0052916
"C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/logo.png","C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/logo.xnb","TextureProcessor","Texture2DContent",28661,504373,0,0264658

View file

@ -9,7 +9,6 @@
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont2.spritefont</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/keggle.png</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/line.png</File>
<File>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/logo.png</File>
</SourceFiles>
<DestFiles>
@ -19,6 +18,5 @@
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
<File xsi:nil="true" />
</DestFiles>
</SourceFileCollection>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/keggle.png</SourceFile>
<SourceTime>2022-04-23T21:52:30+03:00</SourceTime>
<SourceTime>2022-04-23T00:12:43.2915834+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/Content/keggle.xnb</DestFile>
<DestTime>2022-04-23T23:52:18.2788162+03:00</DestTime>
<DestTime>2022-04-23T14:37:54.0070101+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>

View file

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/line.png</SourceFile>
<SourceTime>2022-04-23T21:42:16+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/Content/line.xnb</DestFile>
<DestTime>2022-04-23T23:12:17.00168+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>ColorKeyColor</Key>
<Value>255,0,255,255</Value>
</Parameters>
<Parameters>
<Key>ColorKeyEnabled</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>GenerateMipmaps</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>ResizeToPowerOfTwo</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>MakeSquare</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Color</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -3,7 +3,7 @@
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/arrow.png</SourceFile>
<SourceTime>2022-04-23T00:23:58+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/arrow.xnb</DestFile>
<DestTime>2022-04-23T23:12:15.2356036+03:00</DestTime>
<DestTime>2022-04-23T16:59:29.6382629+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>

View file

@ -3,7 +3,7 @@
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/ball.png</SourceFile>
<SourceTime>2021-05-04T12:20:30+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/ball.xnb</DestFile>
<DestTime>2022-04-23T23:12:15.2505626+03:00</DestTime>
<DestTime>2022-04-23T16:59:29.6552207+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>

View file

@ -3,7 +3,7 @@
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont.spritefont</SourceFile>
<SourceTime>2011-04-01T09:42:38+04:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/gameFont.xnb</DestFile>
<DestTime>2022-04-23T23:12:15.4045547+03:00</DestTime>
<DestTime>2022-04-23T16:59:29.7826428+03:00</DestTime>
<Importer>FontDescriptionImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>FontDescriptionProcessor</Processor>

View file

@ -3,7 +3,7 @@
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/gameFont2.spritefont</SourceFile>
<SourceTime>2022-04-23T14:47:06+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/gameFont2.xnb</DestFile>
<DestTime>2022-04-23T23:12:15.4534544+03:00</DestTime>
<DestTime>2022-04-23T16:59:29.8289166+03:00</DestTime>
<Importer>FontDescriptionImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>FontDescriptionProcessor</Processor>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/keggle.png</SourceFile>
<SourceTime>2022-04-23T21:52:30+03:00</SourceTime>
<SourceTime>2022-04-23T00:12:43.2915834+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/keggle.xnb</DestFile>
<DestTime>2022-04-23T23:34:45.4964315+03:00</DestTime>
<DestTime>2022-04-23T16:59:29.8349009+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>

View file

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PipelineBuildEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/line.png</SourceFile>
<SourceTime>2022-04-23T21:42:16+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/line.xnb</DestFile>
<DestTime>2022-04-23T23:12:15.4773594+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>
<ProcessorTime>2020-08-10T16:17:54+03:00</ProcessorTime>
<Parameters>
<Key>ColorKeyColor</Key>
<Value>255,0,255,255</Value>
</Parameters>
<Parameters>
<Key>ColorKeyEnabled</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>GenerateMipmaps</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>PremultiplyAlpha</Key>
<Value>True</Value>
</Parameters>
<Parameters>
<Key>ResizeToPowerOfTwo</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>MakeSquare</Key>
<Value>False</Value>
</Parameters>
<Parameters>
<Key>TextureFormat</Key>
<Value>Color</Value>
</Parameters>
<Dependencies />
<BuildAsset />
<BuildOutput />
</PipelineBuildEvent>

View file

@ -3,7 +3,7 @@
<SourceFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/logo.png</SourceFile>
<SourceTime>2022-04-23T11:30:44.0139383+03:00</SourceTime>
<DestFile>C:/Users/Semejkin_AV/Documents/Github_repos/ProgtimeHack2022_Bowling/Bowling/Content/bin/Windows/logo.xnb</DestFile>
<DestTime>2022-04-23T23:12:15.5052868+03:00</DestTime>
<DestTime>2022-04-23T16:59:29.8628251+03:00</DestTime>
<Importer>TextureImporter</Importer>
<ImporterTime>2020-08-10T16:17:54+03:00</ImporterTime>
<Processor>TextureProcessor</Processor>

View file

@ -7,18 +7,15 @@ using System.Collections.Generic;
using System.Windows.Forms;
using NetLib;
using System.Threading;
using System.Text;
using System;
namespace Bowling
{
public enum GameState
{
Menu, Game, Exit, Connect_to_server, PauseGame, EndGame
Menu, Game, Exit, Connect_to_server, EndGame
}
public class Game1 : Game
{
private Color[] colors = { Color.White/*, Color.Red, Color.Black, Color.DeepSkyBlue, Color.DeepPink*/ };
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
private static int gutter_height;
@ -36,9 +33,8 @@ namespace Bowling
private Vector2 ballStartPosition;
private List<Classes.UI.Label> tableLabels;
private int intermediateScore;
private int counter;
private Texture2D line_texture;
private Random random;
private Classes.UI.Label lblCountP1;
private Classes.UI.Label lblCountP2;
private List<Pin> pins = new List<Pin>();
@ -56,7 +52,6 @@ namespace Bowling
_graphics.PreferredBackBufferHeight = 1000;
Content.RootDirectory = "Content";
IsMouseVisible = true;
Window.Title = "Bowling";
}
protected override void Initialize()
@ -66,8 +61,7 @@ namespace Bowling
gutter_bottom_y = _graphics.PreferredBackBufferHeight - 100;
gutter_height = 50;
ballStartPosition = new Vector2(10, gutter_top_y + (gutter_bottom_y - gutter_top_y) / 2 - 25);
random = new Random();
ball = new Ball(ballStartPosition, Vector2.Zero, Color.White, Gutter_top_y, gutter_bottom_y, gutter_height, _graphics.PreferredBackBufferWidth);
ball = new Ball(ballStartPosition, Vector2.Zero, Color.Blue, Gutter_top_y, gutter_bottom_y, gutter_height, _graphics.PreferredBackBufferWidth);
menu = new Menu();
player2 = new Player();
rowWidth = 80;
@ -76,7 +70,6 @@ namespace Bowling
tableMarginLeft = 20;
tableLabels = new List<Classes.UI.Label>();
intermediateScore = 0;
counter = 0;
base.Initialize();
}
@ -93,7 +86,7 @@ namespace Bowling
{
for (int j = 0; j < count; j++)
{
pins.Add(new Pin(keggle_texture, new Vector2(_graphics.PreferredBackBufferWidth - 150 * modifier + i * keggle_texture.Width * modifier, j * keggle_texture.Height * modifier + gutter_top_y - keggle_texture.Height * count / 2 * modifier + keggle_texture.Height * 5 + 40)));
pins.Add(new Pin(keggle_texture, new Vector2(_graphics.PreferredBackBufferWidth - 150 * modifier + i * keggle_texture.Width * modifier, j * keggle_texture.Height * modifier + gutter_top_y - keggle_texture.Height * count / 2 * modifier + keggle_texture.Height * 6 + 30)));
}
count += 1;
}
@ -101,7 +94,6 @@ namespace Bowling
whiteRectangle = new Texture2D(GraphicsDevice, 1, 1);
whiteRectangle.SetData(new[] { Color.White });
menu.LoadContent(Content);
line_texture = Content.Load<Texture2D>("line");
}
protected override void Update(GameTime gameTime)
@ -123,48 +115,20 @@ namespace Bowling
if (connect.ShowDialog() == DialogResult.OK)
{
gameState = GameState.Menu;
player1 = new Player() { Name = connect.name, Score = new List<int>() };
gameState = GameState.Menu;
player1 = new Player() { Name = connect.Name, Score = new List<int>() };
NetLib.NetLib.IP = connect.IP;
NetLib.NetLib.port = connect.Port;
NetLib.NetLib.Connect();
SendPlayerData(player1);
player2.Deserialize(NetLib.NetLib.Receive());
Thread thread = new Thread(() =>
{
while (true)
{
string msg = NetLib.NetLib.Receive();
if (msg == "11")
{
ResetAll();
}
else if (msg == "12")
{
Exit();
}
else
{
player2.Deserialize(msg);
}
}
player2.Deserialize(NetLib.NetLib.Receive());
});
thread.Start();
}
else { gameState = GameState.Exit; }
break;
case GameState.EndGame:
counter++;
if (counter >= 300)
{
gameState = GameState.Menu;
counter = 0;
NetLib.NetLib.Send("11");
}
break;
case GameState.PauseGame:
if (player2.Score.Count == 21 || (player2.Score.Count == 20 && player2.Score[18] + player2.Score[19] != 10)) gameState = GameState.EndGame;
if (tableLabels.Count >= 77) gameState = GameState.EndGame;
break;
}
base.Update(gameTime);
}
@ -179,9 +143,8 @@ namespace Bowling
{
case GameState.Game:
DrawGrid();
_spriteBatch.Draw(whiteRectangle, new Rectangle(0, gutter_top_y - gutter_height, 10000, gutter_height), Color.Gray);
_spriteBatch.Draw(whiteRectangle, new Rectangle(0, gutter_bottom_y, 10000, gutter_height), Color.Gray);
_spriteBatch.Draw(line_texture, new Rectangle(0, gutter_top_y, _graphics.PreferredBackBufferWidth, gutter_bottom_y - gutter_top_y), Color.White);
_spriteBatch.Draw(whiteRectangle, new Rectangle(0, gutter_top_y - gutter_height, 10000, gutter_height), Color.Aquamarine);
_spriteBatch.Draw(whiteRectangle, new Rectangle(0, gutter_bottom_y, 10000, gutter_height), Color.Aquamarine);
for (int i = 0; i < pins.Count; i++)
{
pins[i].Draw(_spriteBatch);
@ -195,22 +158,8 @@ namespace Bowling
case GameState.Menu:
menu.Draw(_spriteBatch);
break;
case GameState.EndGame:
DrawGrid();
foreach (Classes.UI.Label lbl in tableLabels)
{
lbl.Draw(_spriteBatch);
}
break;
case GameState.PauseGame:
DrawGrid();
foreach (Classes.UI.Label lbl in tableLabels)
{
lbl.Draw(_spriteBatch);
}
break;
}
base.Draw(gameTime);
_spriteBatch.End();
}
@ -228,7 +177,7 @@ namespace Bowling
{
player1.Score.Add(intermediateScore);
intermediateScore = 0;
ball = new Ball(ballStartPosition, Vector2.Zero, Color.White, Gutter_top_y, gutter_bottom_y, gutter_height, _graphics.PreferredBackBufferWidth);
ball = new Ball(ballStartPosition, Vector2.Zero, Color.Blue, Gutter_top_y, gutter_bottom_y, gutter_height, _graphics.PreferredBackBufferWidth);
ball.LoadContent(Content);
if (player1.Score.Count <= 20 && player1.Score.Count % 2 == 0)
{
@ -238,10 +187,9 @@ namespace Bowling
{
if (player1.Score[18] + player1.Score[19] == 10) NewMove();
}
if (player1.Score.Count == 21 || (player1.Score.Count == 20 && player1.Score[18] + player1.Score[19] != 10))
if (player1.Score.Count == 20 && player1.Score[18] + player1.Score[19] != 10)
{
gameState = GameState.PauseGame;
if (player2.Score.Count == 21 || (player2.Score.Count == 20 && player2.Score[18] + player2.Score[19] != 10)) gameState = GameState.EndGame;
gameState = GameState.EndGame;
}
SendPlayerData(player1);
}
@ -250,9 +198,6 @@ namespace Bowling
private void DrawGrid()
{
tableLabels.Clear();
_spriteBatch.Draw(whiteRectangle, new Rectangle(tableMarginLeft, tableMarginTop, rowWidth * 13, rowHeight * 7), Color.RoyalBlue);
_spriteBatch.Draw(whiteRectangle, new Rectangle(tableMarginLeft + rowWidth, tableMarginTop + rowHeight, rowWidth * 12, rowHeight * 6),
Color.SkyBlue);
int currentRow = 0;
int currentColumn = 0;
for (int i = 0; i < 6; i++)
@ -270,11 +215,11 @@ namespace Bowling
for (int i = 1; i < 11; i++)
{
int shift = (i == 10) ? tableMarginLeft - 5 + rowWidth * i + rowWidth : tableMarginLeft - 5 + rowWidth * i + rowWidth / 2;
Classes.UI.Label lbl = new Classes.UI.Label(i.ToString(), new Vector2(shift, tableMarginTop + 2), Color.White);
Classes.UI.Label lbl = new Classes.UI.Label(i.ToString(), new Vector2(shift, tableMarginTop + 2), Color.Red);
lbl.LoadContent(Content);
tableLabels.Add(lbl);
}
Classes.UI.Label label = new Classes.UI.Label("TTL", new Vector2(tableMarginLeft + currentColumn - 2 * rowWidth + 10, tableMarginTop + 5), Color.MonoGameOrange);
Classes.UI.Label label = new Classes.UI.Label("TTL", new Vector2(tableMarginLeft + currentColumn - 2 * rowWidth + 10, tableMarginTop + 5), Color.Red);
label.LoadContent(Content);
tableLabels.Add(label);
for (int i = 0; i < player1.Score.Count; i++)
@ -282,15 +227,15 @@ namespace Bowling
string score = (player1.Score[i] == 0) ? "-" : player1.Score[i].ToString();
if (i != 0 && i % 2 == 1) score = (player1.Score[i] + player1.Score[i - 1] == 10) ? "/" : score;
Classes.UI.Label lbl = new Classes.UI.Label(score, new Vector2(tableMarginLeft + rowWidth + i * (rowWidth / 2) + 10, tableMarginTop + rowHeight + 5),
Color.White);
Color.Fuchsia);
lbl.LoadContent(Content);
tableLabels.Add(lbl);
}
for (int i = 0; i < player1.Score.Count / 2; i++)
{
int score = player1.Score[i * 2] + player1.Score[i * 2 + 1];
Classes.UI.Label lbl = new Classes.UI.Label(score.ToString(), new Vector2(tableMarginLeft + rowWidth + i * rowWidth + 30, tableMarginTop + 2 * rowHeight + 25),
Color.White);
Classes.UI.Label lbl = new Classes.UI.Label(score.ToString(), new Vector2(tableMarginLeft + rowWidth + i * rowWidth + 30, tableMarginTop + 2 * rowHeight + 25)
, Color.Fuchsia);
lbl.FontName = "gameFont2";
lbl.LoadContent(Content);
tableLabels.Add(lbl);
@ -302,9 +247,8 @@ namespace Bowling
if (i % 2 == 0) score = 0;
else if (i == 1) score = Sum(player1.Score);
else score = Sum(player2.Score);
Classes.UI.Label lbl = new Classes.UI.Label(score.ToString(), new Vector2(tableMarginLeft + rowWidth * 12 + rowWidth / 2 - 15, tableMarginTop + countRows + rowHeight + ((i % 2 == 1) ? 15 : 5)),
Color.White);
if (i % 2 == 1) lbl.FontName = "gameFont2";
Classes.UI.Label lbl = new Classes.UI.Label(score.ToString(), new Vector2(tableMarginLeft + rowWidth * 12 + rowWidth / 2, tableMarginTop + countRows + rowHeight + 5),
Color.Fuchsia);
lbl.LoadContent(Content);
tableLabels.Add(lbl);
countRows += (i != 0 && i % 2 == 1) ? 2 * rowHeight : rowHeight;
@ -314,28 +258,19 @@ namespace Bowling
string score = (player2.Score[i] == 0) ? "-" : player2.Score[i].ToString();
if (i != 0 && i % 2 == 1) score = (player2.Score[i] + player2.Score[i - 1] == 10) ? "/" : score;
Classes.UI.Label lbl = new Classes.UI.Label(score, new Vector2(tableMarginLeft + rowWidth + i * (rowWidth / 2) + 10, tableMarginTop + rowHeight * 4 + 5),
Color.White);
Color.Fuchsia);
lbl.LoadContent(Content);
tableLabels.Add(lbl);
}
for (int i = 0; i < player2.Score.Count / 2; i++)
{
int score = player2.Score[i * 2] + player2.Score[i * 2 + 1];
Classes.UI.Label lbl = new Classes.UI.Label(score.ToString(), new Vector2(tableMarginLeft + rowWidth + i * rowWidth + 30, tableMarginTop + 5 * rowHeight + 25),
Color.White);
Classes.UI.Label lbl = new Classes.UI.Label(score.ToString(), new Vector2(tableMarginLeft + rowWidth + i * rowWidth + 30, tableMarginTop + 5 * rowHeight + 25)
, Color.Fuchsia);
lbl.FontName = "gameFont2";
lbl.LoadContent(Content);
tableLabels.Add(lbl);
}
Classes.UI.Label label_p1_name = new Classes.UI.Label(player1.Name[0].ToString(), new Vector2(tableMarginLeft + 5, tableMarginTop + rowHeight),
Color.White);
label_p1_name.LoadContent(Content);
tableLabels.Add(label_p1_name);
Classes.UI.Label label_p2_name = new Classes.UI.Label(player2.Name[0].ToString(), new Vector2(tableMarginLeft + 5, tableMarginTop + 4 * rowHeight),
Color.White);
label_p2_name.LoadContent(Content);
tableLabels.Add(label_p2_name);
}
private void NewMove()
@ -347,9 +282,9 @@ namespace Bowling
private int Sum(List<int> score)
{
int sum = 0;
for (int i = 0; i < score.Count; i++)
foreach (int a in score)
{
sum += score[i];
sum += a;
}
return sum;
}
@ -358,23 +293,5 @@ namespace Bowling
{
NetLib.NetLib.Send(player.Serialize());
}
private void ResetAll()
{
ball = new Ball(ballStartPosition, Vector2.Zero, Color.White, Gutter_top_y, gutter_bottom_y, gutter_height, _graphics.PreferredBackBufferWidth);
menu = new Menu();
player1.Score.Clear();
player2.Score.Clear();
rowWidth = 80;
rowHeight = 50;
tableMarginTop = 20;
tableMarginLeft = 20;
tableLabels = new List<Classes.UI.Label>();
intermediateScore = 0;
counter = 0;
gameState = GameState.Menu;
pins.Clear();
LoadContent();
}
}
}

View file

@ -93,4 +93,3 @@ C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Bowling\obj
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Bowling\obj\Debug\netcoreapp3.1\Bowling.pdb
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Bowling\obj\Debug\netcoreapp3.1\Bowling.genruntimeconfig.cache
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Bowling\bin\Debug\netcoreapp3.1\Content\gameFont2.xnb
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Bowling\bin\Debug\netcoreapp3.1\Content\line.xnb

View file

@ -15,7 +15,7 @@ namespace NetLib
public static void Connect()
{
IPAddress ip = Dns.GetHostAddresses(IP)[0];
IPAddress ip = IPAddress.Parse(IP);
IPEndPoint ipe = new IPEndPoint(ip, port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ipe);

View file

@ -7,7 +7,7 @@ namespace Bowling_Server.Classes
{
[Serializable]
internal class Player
{
{
[JsonProperty("name")]
public string Name { get; set; }
@ -15,9 +15,9 @@ namespace Bowling_Server.Classes
public List<int> Score { get; set; }
[NonSerialized]
public Socket Socket;
public Socket socket;
public string Serialize()
{
return JsonConvert.SerializeObject(this);

View file

@ -1,10 +1,11 @@
using Bowling_Server.Classes;
using System;
using System;
using System.Collections.Generic;
using Bowling_Server.Classes;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using NetLib;
using System.Text;
namespace Bowling_Server
{
@ -12,6 +13,7 @@ namespace Bowling_Server
{
static List<Player> players = new List<Player>();
private static Socket socket;
public static Random random;
static void Main(string[] args)
{
@ -32,7 +34,7 @@ namespace Bowling_Server
}
StartGame(group);
}
Thread.Sleep(500);
Thread.Sleep(1000);
}
});
matchmakingThread.Start();
@ -47,7 +49,7 @@ namespace Bowling_Server
string json = Encoding.ASCII.GetString(data, 0, recv);
Player player = new Player();
player.Deserialize(json);
player.Socket = client;
player.socket = client;
players.Add(player);
});
thread.Start();
@ -60,16 +62,12 @@ namespace Bowling_Server
IPEndPoint ipe = new IPEndPoint(ip, port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(ipe);
socket.Listen(100);
socket.Listen(2);
}
public static void Send(string message, Socket client)
{
try
{
byte[] data = Encoding.ASCII.GetBytes(message);
client.Send(data);
}
catch { }
byte[] data = Encoding.ASCII.GetBytes(message);
client.Send(data);
}
static void CastOpponents(List<Player> group)
{
@ -79,7 +77,7 @@ namespace Bowling_Server
{
if (opponent != player)
{
Send(opponent.Serialize(), player.Socket);
Send(opponent.Serialize(), player.socket);
}
}
}
@ -87,7 +85,6 @@ namespace Bowling_Server
static void StartGame(List<Player> group)
{
Console.WriteLine("OK");
CastOpponents(group);
foreach (var player in group)
@ -95,55 +92,17 @@ namespace Bowling_Server
Thread thread = new Thread(() =>
{
byte[] data = new byte[1024];
player.Socket.ReceiveTimeout = 60000;
try
while (true)
{
while (true)
{
int dataLength = player.Socket.Receive(data);
string json = Encoding.ASCII.GetString(data, 0, dataLength);
if (json == "11")
{
foreach (var player in group)
{
player.Socket.Send(Encoding.ASCII.GetBytes("11"));
player.Score = new List<int>();
players.Add(player);
}
break;
}
player.Deserialize(json);
CastOpponents(group);
}
int dataLength = player.socket.Receive(data);
string json = Encoding.ASCII.GetString(data, 0, dataLength);
player.Deserialize(json);
CastOpponents(group);
}
catch
{
try
{
Console.WriteLine("Player disconnected");
if (group.IndexOf(player) == 1)
{
group[1].Socket.Send(Encoding.ASCII.GetBytes("12"));
group[0].Socket.Send(Encoding.ASCII.GetBytes("11"));
group[0].Score = new List<int>();
players.Add(group[0]);
}
else
{
group[0].Socket.Send(Encoding.ASCII.GetBytes("12"));
group[1].Socket.Send(Encoding.ASCII.GetBytes("11"));
group[1].Score = new List<int>();
players.Add(group[1]);
}
}
catch (Exception e)
{
Console.WriteLine("Players disconnected. Can't process disconnection. Game ended.");
}
}
});
}
);
thread.Start();
}
}
}
}
}

View file

@ -1,21 +1 @@
# ProgtimeHack2022_Bowling
Bowling game writeen in ProgTime 2022 hackathon/
# Server setup
Install dotnet: <br/>
Windows: https://dotnet.microsoft.com/en-us/download <br/>
Linux: https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu <br/>
Compile and run server: <br/>
```
cd Bowling_Server
dotnet run
```
In the console that opens, enter server IP (``0.0.0.0`` if you want to listen from all available IP) and the port(ex. 7632) on which the game server will be launched.
The server must have as least one static IP.
# Game
Compile the game for the desired operating system and send it to users. At startup, enter the IP and port on which the server is running. <br/>
If there are enough players(2), the game will start **immediately**.
# ProgtimeHack2022_Bowling

View file

@ -1,13 +0,0 @@
using System;
using System.Net;
namespace Test
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine(Dns.GetHostAddresses("mootfrost.ru")[0]);
}
}
}

View file

@ -1,8 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>

View file

@ -1,23 +0,0 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v3.1": {
"Test/1.0.0": {
"runtime": {
"Test.dll": {}
}
}
}
},
"libraries": {
"Test/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View file

@ -1,8 +0,0 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Semejkin_AV\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Semejkin_AV\\.nuget\\packages"
]
}
}

View file

@ -1,9 +0,0 @@
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
}
}
}

View file

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]

View file

@ -1,23 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Test")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Test")]
[assembly: System.Reflection.AssemblyTitleAttribute("Test")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Создано классом WriteCodeFragment MSBuild.

View file

@ -1 +0,0 @@
f6533ec0c338906e0f581238a326c04606b3059f

View file

@ -1,3 +0,0 @@
is_global = true
build_property.RootNamespace = Test
build_property.ProjectDir = C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\

View file

@ -1 +0,0 @@
888bf9d461a4b4d8262376cf6b207220f62a1b4f

View file

@ -1,14 +0,0 @@
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\bin\Debug\netcoreapp3.1\Test.exe
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\bin\Debug\netcoreapp3.1\Test.deps.json
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\bin\Debug\netcoreapp3.1\Test.runtimeconfig.json
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\bin\Debug\netcoreapp3.1\Test.runtimeconfig.dev.json
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\bin\Debug\netcoreapp3.1\Test.dll
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\bin\Debug\netcoreapp3.1\Test.pdb
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.csproj.AssemblyReference.cache
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.AssemblyInfoInputs.cache
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.AssemblyInfo.cs
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.csproj.CoreCompileInputs.cache
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.dll
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.pdb
C:\Users\Semejkin_AV\Documents\Github_repos\ProgtimeHack2022_Bowling\Test\obj\Debug\netcoreapp3.1\Test.genruntimeconfig.cache

View file

@ -1 +0,0 @@
cf6a809174eb713435eea0664134528a06d2b76a

View file

@ -1,68 +0,0 @@
{
"format": 1,
"restore": {
"C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj": {}
},
"projects": {
"C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj",
"projectName": "Test",
"projectPath": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj",
"packagesPath": "C:\\Users\\Semejkin_AV\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\Semejkin_AV\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netcoreapp3.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.NETCore.App.Host.win-x64",
"version": "[3.1.23, 3.1.23]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.300-preview.22204.3\\RuntimeIdentifierGraph.json"
}
}
}
}
}

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(ExcludeRestorePackageImports)' != 'true'">
<RestoreSuccess Condition="'$(RestoreSuccess)' == ''">True</RestoreSuccess>
<RestoreTool Condition="'$(RestoreTool)' == ''">NuGet</RestoreTool>
<ProjectAssetsFile Condition="'$(ProjectAssetsFile)' == ''">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == ''">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition="'$(NuGetPackageFolders)' == ''">C:\Users\Semejkin_AV\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition="'$(NuGetProjectStyle)' == ''">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition="'$(NuGetToolVersion)' == ''">6.2.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition="'$(ExcludeRestorePackageImports)' != 'true'">
<SourceRoot Include="C:\Users\Semejkin_AV\.nuget\packages\" />
</ItemGroup>
</Project>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View file

@ -1,73 +0,0 @@
{
"version": 3,
"targets": {
".NETCoreApp,Version=v3.1": {}
},
"libraries": {},
"projectFileDependencyGroups": {
".NETCoreApp,Version=v3.1": []
},
"packageFolders": {
"C:\\Users\\Semejkin_AV\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj",
"projectName": "Test",
"projectPath": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj",
"packagesPath": "C:\\Users\\Semejkin_AV\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\Semejkin_AV\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netcoreapp3.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.NETCore.App.Host.win-x64",
"version": "[3.1.23, 3.1.23]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.300-preview.22204.3\\RuntimeIdentifierGraph.json"
}
}
}
}

View file

@ -1,10 +0,0 @@
{
"version": 2,
"dgSpecHash": "BEh5d9qXk9PtQezdq/2nEVWFOsPSR1oVjwUhtMfugQxH0a54MUMI06CPnCdjxEKu0guIGIy/EiGQCb1zqwwuWw==",
"success": true,
"projectFilePath": "C:\\Users\\Semejkin_AV\\Documents\\Github_repos\\ProgtimeHack2022_Bowling\\Test\\Test.csproj",
"expectedPackageFiles": [
"C:\\Users\\Semejkin_AV\\.nuget\\packages\\microsoft.netcore.app.host.win-x64\\3.1.23\\microsoft.netcore.app.host.win-x64.3.1.23.nupkg.sha512"
],
"logs": []
}