求助一下
我现在在制作一个游戏,是一个8*8的棋盘
然后我用clickonboard让它实现我在棋盘上的某一格点一下,CMD里就会显示我点的是哪行哪列
那我需要在我点的地方留下一个红色圈圈,应该怎么做呢?
这是部分代码:
def rowColumnConversion(x,y):
print('Row:', math.ceil(y*10), 'Column:', math.floor(x*10+1))
def player_1(x, y):
texturtle.goto(x,y)
def player_2(x, y):
texturtle.goto(x,y)
def gameplay(INITX, INITY, CELLDIM, GRIDTEXT, texturtle, Game):
#这是画红圈圈的function
Game.shape("circle")
Game.shapesize(1,1)
Game.color("red")
[查看全文]
现在的状况就是可以简单运算,但是连续那种,比如1+3-2这种就不行,只能实现两位数的四则运算_(:з」∠)_是需要创建个变量来存储sum1 的值么?还是怎么OJZ
求帮助……
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool operatorFlag = false;
public void InputNumber(string number1)
{
if (tBanswer.Text == "0")
{
tBanswer.Text = "";
}
tBanswer.Text = tBanswer.Text + number1;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void bonDec_Click(object sender, EventArgs e)
{
if (tBanswer.Text.IndexOf(".") == -1)
InputNumber(".");
}
private void bon00_Click(object sender, EventArgs e)
{
InputNumber("0");
}
private void bon01_Click(object sender, EventArgs e)
{
InputNumber("1");
}
private void bon02_Click(object sender, EventArgs e)
{
InputNumber("2");
}
private void bon03_Click(object sender, EventArgs e)
{
InputNumber("3");
}
private void bon04_Click(object sender, EventArgs e)
{
InputNumber("4");
}
private void bon05_Click(object sender, EventArgs e)
{
InputNumber("5");
}
private void bon06_Click(object sender, EventArgs e)
{
InputNumber("6");
}
private void bon07_Click(object sender, EventArgs e)
{
InputNumber("7");
}
private void bon08_Click(object sender, EventArgs e)
{
InputNumber("8");
}
private void bon09_Click(object sender, EventArgs e)
{
InputNumber("9");
}
public static string numbersaved;
public static string signsaved;
public void SaveInputed(string num1, string sign1)
{
if (num1 == "0" | num1 == "") return;
numbersaved = num1;
signsaved = sign1;
tBanswer.Text = "0";
}
private void bonAdd_Click(object sender, EventArgs e)
{
SaveInputed(tBanswer.Text, "加");
}
private void bonSub_Click(object sender, EventArgs e)
{
SaveInputed(tBanswer.Text, "减");
}
private void bonMul_Click(object sender, EventArgs e)
{
SaveInputed(tBanswer.Text, "乘");
}
private void bonDiv_Click(object sender, EventArgs e)
{
SaveInputed(tBanswer.Text, "除");
}
private void bonEqula_Click(object sender, EventArgs e)
{
string numbernow = tBanswer.Text;
if (signsaved == "" | numbersaved == "" | numbernow == "" | numbernow == "0") return;
tBanswer.Text = Calcuration(numbersaved, signsaved, numbernow);
signsaved = "";
numbersaved = "";
}
public string Calcuration(string num1, string sign1, string num2)
{
float number1, number2, sum1 = 0, result=0;
try
{
number1 = (float)(Double.Parse(num1));
number2 = (float)(Double.Parse(num2));
if (sign1 == "加")
{
sum1 = number1 + number2;
}
if (sign1 == "减")
{
sum1 = number1 - number2;
}
if (sign1 == "乘")
{
sum1 = number1 * number2;
}
if (sign1 == "除")
{
sum1 = number1 / number2;
}
return result.ToString();
}
catch
{
return "";
}
}
private void bonC_Click(object sender, EventArgs e)
{
tBanswer.Text = "0";
numbersaved = "";
signsaved = "";
}
}
}
[查看全文]
在网上查了一下,关于recv()的解释大致是这样的:
int recv( SOCKET s, char FAR *buf, int len, int flags );
不论是客户端还是服务器端应用程序都用recv函数从TCP连接的另一端接收数据。
该函数的:
第一个参数指定接收端套接字描述符;
第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;
第三个参数指明buf的长度;
第四个参数一般置0。
这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲 中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数 据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,只到 协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据copy到buf中(注意协议接收到的数据可能大于buf的长度,所以 在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
但是这里只提到了接受缓冲区的数据大于buf的长度的情况,那如果接受缓冲区的数据比buf的长度短会怎样?是直接返回还是一直等待直到buf被填满?
[查看全文]
本帖最后由 阳光闪闪 于 2015-7-31 10:26 编辑
c primer plus 第七章第11道习题,用的是DEV c++, 我写出来后每次进入switch不管跳到哪个case最后都会强行走一遍default再转下一个循环。。。,试过把continue换成break还是依然跳不过这个default,公司写代码的同事都搞不定。。。求大神指教我问题出在哪里TAT
int main(void)
{
char choice,choice2;
int artichoke, beet, carrot, buy, tart, tbee, tcar,allmess;
float allprice,fprice,tprice;
tart = tbee = tcar = 0;
printf("Please choose the product you want to buy:(q to quit,y to count)\n");
printf("a) artichoke b) beet c) carrot \n");
first:while((choice=getchar()) != 'q')
{
switch(choice)
{
case 'a':
printf("How many pounds do you want to buy: \n");
scanf("%d", &buy);
tart += buy;
continue;
case 'b':
printf("How many pounds beet do you want to buy: \n");
scanf("%d", &buy);
tbee += buy;
continue;
case 'c':
printf("How many pounds carrot do you want to buy: \n");
scanf("%d", &buy);
tcar += buy;
continue;
default: printf("You have enter the wrong number, please enter a, b, c, y or q. \n");
goto first;
}
printf("Do you want to buy more?\n");
goto first;
}
printf("Thank you!");
over:return 0;
}
[查看全文]